In diesem Artikel werden hauptsächlich die relevanten Informationen zum PHP-Singleton-Modus und zum Factory-Modus ausführlich vorgestellt. Interessierte Freunde können darauf verweisen.
1. Singleton-Modus und Verantwortungsmuster wird verwendet, um einen einzelnen funktionalen Zugangspunkt im Programm zu erstellen. Laienhaft ausgedrückt ist das instanziierte Objekt einzigartig.
Alle Singleton-Muster haben mindestens die folgenden drei gemeinsamen Elemente:
Sie müssen einen Konstruktor haben und als privat markiert sein
Sie haben eine Speicherklasse für statische Mitgliedsvariablen die Instanz
3. Sie verfügen über eine öffentliche statische Methode, um auf diese Instanz zuzugreifen
Eine Singleton-Klasse kann nicht direkt in anderen Klassen instanziiert werden, sondern nur von sich selbst instanziiert werden. Es erstellt keine Kopie der Instanz, sondern gibt einen Verweis auf die intern in der Singleton-Klasse gespeicherte Instanz zurück.
Singleton-Musterinstanz
<?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 ?>
2. Das Fabrikmuster ist eine Klasse, die bestimmte Methoden zum Erstellen von Objekten für Sie bereitstellt ermöglicht es Ihnen, Factory-Klassen zum Erstellen von Objekten zu verwenden, anstatt new direkt zu verwenden.
Wenn Sie also den Typ des erstellten Objekts ändern möchten, müssen Sie nur die Fabrik ändern.
<?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();
Factory-Musterinstanz
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 ?>
Verwandte Empfehlungen:
Singleton-Muster des PHP-Musterdesigns
Adaptermuster des PHP-Musterdesigns
Eine kurze Analyse des PHP-Singleton-Modus, eine kurze Analyse des PHP-Modus_PHP-Tutorial
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung und Beispiele des Singleton-Modus und des Factory-Modus in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!