이 글은 주로 PHP 싱글톤 모드와 팩토리 모드에 대한 관련 정보를 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.
1. 싱글톤 모드는 책임 모드라고도 합니다. 일반인의 관점에서 보면 인스턴스화된 개체는 고유합니다.
모든 싱글톤 패턴에는 최소한 다음 세 가지 공통 요소가 있습니다.
1. 생성자가 있어야 하며 private으로 표시되어야 합니다.
2. 클래스의 인스턴스를 보유하는 정적 멤버 변수가 있어야 합니다. 이 인스턴스에 액세스하는 정적 메서드
<?php class Single { private $name;//声明一个私有的实例变量 private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。 } static public $instance;//声明一个静态变量(保存在类中唯一的一个实例) static public function getinstance(){//声明一个getinstance()静态方法,用于检测是否有实例对象 if(!self::$instance) self::$instance = new self(); return self::$instance; } public function setname($n){ //给变量$name赋值 $this->name = $n; } public function getname(){ //取变量$name的值 return $this->name; } } $a = Single::getinstance(); $b = Single::getinstance(); $a->setname('hello world'); $b->setname('good morning'); echo $a->getname();//good morning echo $b->getname();//good morning ?>
<?php //工厂类(关于运算符的操作) class factory{ public static function dx($ope){ switch($ope){ case "+": return new plus(); break; case "-": return new sub(); break; case "%": return new rem(); break; } } } $ope = factory::dx("+"); $ope->a = 20; $ope->b = 10; echo $ope->opera();
class Factory {//创建一个基本的工厂类 static public function fac($id){//创建一个返回对象实例的静态方法 if(1 == $id) return new A(); elseif(2==$id) return new B(); elseif(3==$id) return new C(); return new D(); } } interface FetchName {//创建一个接口 public function getname();// } class A implements FetchName{ private $name = "AAAAA"; public function getname(){ return $this->name; } } class C implements FetchName{ private $name = "CCCCC"; public function getname(){ return $this->name; } } class B implements FetchName{ private $name = "BBBBB"; public function getname(){ return $this->name; } } class D implements FetchName{ private $name = "DDDDD"; public function getname(){ return $this->name; } } $o = Factory::fac(6);//调用工厂类中的方法 if($o instanceof FetchName){ echo $o->getname();//DDDDD } $p=Factory::fac(3); echo $p->getname();//CCCCC ?>
PHP 싱글턴에 대한 간략한 분석 모드, PHP 모드의 간략한 분석_PHP 튜토리얼
위 내용은 PHP의 싱글톤 모드와 팩토리 모드에 대한 자세한 설명과 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!