> 백엔드 개발 > PHP 튜토리얼 > PHP 팩토리 패턴이란 무엇입니까? PHP 팩토리 모드를 사용하는 이유는 무엇입니까?

PHP 팩토리 패턴이란 무엇입니까? PHP 팩토리 모드를 사용하는 이유는 무엇입니까?

黄舟
풀어 주다: 2023-03-17 12:16:01
원래의
5621명이 탐색했습니다.

제목을 보면 많은 친구들이 같은 질문을 할 것이라고 생각합니다. PHP에는 개발 중에 많은 모드가 있습니다. 오늘은 PHP 팩토리 모드 중 하나를 소개하겠습니다. 따라서 먼저 PHP 팩토리 모드가 무엇인지 이해해야 합니다. ., 왜 PHP 팩토리 모드를 사용하나요?

 그럼 팩토리 모드란 무엇일까요?

이름으로 보아 단서가 없는 것 같습니다. 생산과 관련된 공장 모드? 아니면 생산과정과 관련이 있는 걸까요? 공장장과 관련이 있는 걸까요? 리더십 비서와 관련이 있습니까? 장관... 알겠습니다. 너무 가까이 다가가지는 말자. 이른바 공장 모델은 실제로 생산과 관련이 있습니다. 무엇을 생산할까요? 생성되는 것은 인스턴스 객체입니다. 그것을 생산하는 데 어떤 장비가 사용됩니까? 공장 수업을 통해 제작되었습니다. 그것을 생산하는 방법? 팩토리 클래스는 자체 정적 메서드를 호출하여 객체 인스턴스를 생성합니다.

팩토리 패턴에는 일반 원칙에 따라 Factory라는 정적 메서드인 핵심 구성이 있습니다. 그러나 이는 단지 원칙일 뿐입니다. 비록 팩토리 메서드의 이름은 임의로 지정할 수 있지만 이 정적 메서드는 매개 변수도 사용할 수 있습니다. 모든 데이터의 객체를 반환해야 합니다.

 공장 모드를 사용하는 이유는 무엇인가요?

팩토리 패턴을 접해본 적이 없는 많은 사람들은 묻지 않을 수 없습니다. 왜 내가 객체 생성을 위해 팩토리 클래스를 구성하는 데 그렇게 많은 노력을 기울여야 하는가? 유지보수 용이성, 확장성 등을 적용하는 대신 이런 간단한 문제를 생각해 볼 수도 있습니다. 프로젝트에서는 클래스를 통해 객체를 생성합니다. 거의 완료되었거나 완료되어 기능을 확장해야 할 때 원래 클래스 이름이 그다지 적합하지 않거나 기능 확장을 위해 클래스에 구문 함수 매개변수를 추가해야 하는 것으로 나타났습니다. 젠장! 이 클래스를 통해 많은 객체 인스턴스를 생성했는데, 그래도 하나씩 변경해야 합니까? 이제야 우리는 "높은 응집력과 낮은 결합력"의 폭과 깊이를 느낄 수 있습니다. 문제 없습니다. 팩토리 메소드를 사용하면 이 문제를 해결할 수 있습니다.

다시 생각해 보세요. 데이터베이스에 연결하고 싶습니다. php, mysql 확장, mysqli 확장, PDO 확장에는 여러 가지 방법이 있습니다. 나는 단지 향후 작업을 위한 개체를 원할 뿐입니다. 내가 원하는 것은 상황에 따라 다릅니다. 모두 데이터베이스에 연결하고 있으므로 연결 설정, 쿼리, 연결 끊기 등 동일한 기능을 가져야 합니다(인터페이스의 중요성은 여기에 표시됩니다). 대체로 이러한 방법은 "외부 세계와 통합되고 통합"되어야 합니다. 이것을 달성하는 방법은 무엇입니까? 팩토리 패턴을 사용합니다.

 팩토리 패턴을 어떻게 구현하나요?

 싱글톤 모드에 비해 위의 팩토리 클래스와 팩토리 클래스의 정적 메서드에 대한 정보를 충분히 제공했습니다. 정적 메서드에서 생성해야 하는 객체 인스턴스를 새로 만드세요. 물론 위의 두 번째 질문에 대해서는 팩토리 클래스의 정적 메서드의 매개 변수를 기반으로 간단히 판단할 수 있습니다. if..else..를 사용하든, switch..case..를 사용하든 어떤 클래스를 생성할지 결정하는 작업을 빠르고 효율적으로 완료할 수 있으면 좋을 것 같습니다. 마지막으로 팩토리 클래스의 정적 메서드가 객체를 반환한다는 점을 기억하세요. 둘은커녕 셋도 아니다.

  기본 팩토리 클래스:

//要创建对象实例的类class MyObject{
} //工厂类class MyFactory{public static function factory(){return new MyObject():
   }
} 
$instance=MyFactory::factory();
로그인 후 복사

  좀 더 복잡한 팩토리 패턴:

<?php
interface Transport{    
public function go();
}class Bus implements Transport{    
public function go(){        
echo "bus每一站都要停";
    }
}class Car implements Transport{    
public function go(){        
echo "car跑的飞快";
    }
}class Bike implements Transport{    
public function go(){        
echo "bike比较慢";
    }
}class transFactory{    
public static function factory($transport)
    {        
        switch ($transport) {            
        case &#39;bus&#39;:                
        return new Bus();                
        break;            
        case &#39;car&#39;:                
        return new Car();                
        break;            
        case &#39;bike&#39;:                
        return new Bike();                
        break;
        }
    }
}$transport=transFactory::factory(&#39;car&#39;);$transport->go();
로그인 후 복사

  팩토리 정적 메소드를 Factory()로 사용해야 할 때, 어리석게 팩토리 클래스 이름을 다시 지정하지 마세요. 공장. 왜? 같은 이름의 constructor를 잊지 마세요~

마지막으로 몇 가지 감정에 대해 이야기해 보겠습니다. 많은 초보자들은 if..else.., 세션 및 쿠키에 대해 방금 배웠습니다. 좀 더 정교해질 예정이다. 사람들과 대화할 때 확장성, 유지 관리 가능성 등에 대해 이야기하는 경우가 많습니다. 코드를 작성하든, 남과 함께 공부하든 나는 늘 '군중 속에서 남을 찾는 단계'에 있다는 생각이 들 때가 있다. 정말 열심히 공부한 뒤 문득 뒤를 돌아보면 '저 사람은 어둠 속에 있다'는 생각이 든다. 빛"이라고 외치며 "이 사람은..."이라고 외칩니다.

요약:

이 기사를 읽고 나면 모든 사람이 PHP 팩토리 모델에 대해 전반적으로 이해하게 되었다고 생각합니다. 이 글이 귀하의 작업에 도움이 되기를 바랍니다.

관련 추천:

PHP 팩토리 모드의 세 가지 형태의 샘플 코드에 대한 자세한 설명

PHP 팩토리 모드 사용 예 요약

php 팩토리 패턴 PHP 디자인 패턴 반복자 패턴

위 내용은 PHP 팩토리 패턴이란 무엇입니까? PHP 팩토리 모드를 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿