//让该类在外界无法造对象 //让外界可以造一个对象,做一个静态方法返回对象 //在类里面通过让静态变量控制返回对象只能是一个。
싱글턴 패턴에는 세 가지 주요 사항이 있습니다.
첫째, 클래스는 인스턴스를 하나만 가질 수 있습니다.
둘째, 이 인스턴스를 자체적으로 생성해야 합니다. 이 인스턴스에 대한 보고는 시스템 전체에 걸쳐 제공됩니다.
1. PHP는 주로 데이터베이스 애플리케이션에 사용됩니다. 싱글톤 모드를 사용하면 새 작업에 많은 리소스가 소비되는 것을 방지할 수 있으며 데이터베이스 연결을 줄여 너무 많은 연결이 발생할 가능성을 줄일 수도 있습니다.
2. 시스템의 특정 구성 정보를 전역적으로 제어하기 위해 클래스가 필요한 경우 싱글톤 모드를 사용하여 쉽게 구현할 수 있습니다. 이는 zend Framework의 FrontController 부분에서 찾을 수 있습니다.
3. 페이지 요청에서는 모든 코드(예: 데이터베이스 작업 클래스 db)가 하나의 클래스에 집중되어 있기 때문에 디버깅이 쉽습니다. 클래스에 후크를 설정하고 로그를 출력하여 어디서나 에코를 방지할 수 있습니다. .
class cat { public $name; private function __construct() { } static $temp; static function new_ob() { if(empty(self::$temp)){ self::$temp = new cat(); } return self::$temp; } function speak(){ return "喵喵喵"; } } //$mao = new cat(); //如果没有猫就造一个,然后等于新的xxx,如果有,直接等于。达到限制的目的。 //$mao; //if (empty($mao)){ // $mao = new cat(); //} // $xxx = $mao; $mao = cat::new_ob(); $mao2 = cat::new_ob(); //给1猫改名字,2猫的名字输出为1猫改的名字。此为单例。 $mao->name = "py";2. 간단한 팩토리 패턴
①추상 기본 클래스: 클래스의 일부 추상 메서드를 정의하여 하위 클래스에서 구현합니다.
②추상 기본 클래스에서 상속되는 하위 클래스: 구현 기본 클래스
③Factory 클래스: 해당 하위 클래스를 모두 인스턴스화하는 데 사용됩니다.
abstract class jsq { public $a; public $b; function yunsuan(){ } } //此为拓展 class jiafa extends jsq { function yunsuan() { //parent::yunsuan(); // TODO: Change the autogenerated stub return $this ->a+$this->b; } } class jianfa extends jsq { function yuansuan(){ return $this->a-$this->b; } } class factory { static function create($x){ switch ($x){ case "+": return new jiafa(); break; case "-": return new jianfa(); break; } } } //$j1 = new jiafa(); //$j1->a = 1; //$j1->b = 2; //$j1->yunsuan(); //尽量避免实例化对象,采用静态方法获取。 $jf = factory::create("+"); $jf->a = 1; $jf->b = 2; echo $jf->yunsuan();
위 내용은 PHP 디자인 패턴에서 팩토리 모드와 싱글톤 모드의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!