Dieser Artikel führt Sie durch das Factory-Methodenmuster in PHP-Entwurfsmustern. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Wie letztes Mal erwähnt, gehört die einfache Fabrik nicht zu den dreiundzwanzig Designmustern von GoF. Diesmal ist es ein echter Kerl. Das berühmte „Factory Method Pattern“ ist hier zu berichten.
Verwandte Empfehlungen: „Ein kurzer Vortrag über das einfache Factory-Muster in PHPErklärung des GoF-Klassendiagramms
GoF-Definition: Definieren Sie eine Schnittstelle zum Erstellen von Objekten und lassen Sie Unterklassen entscheiden, welche Klasse instanziiert werden soll. Die Factory-Methode verschiebt die Instanziierung einer Klasse auf ihre Unterklassen.
GoF-Klassendiagramm:Produkt im Klassendiagramm ist das Produkt
// 商品接口 interface Product{ function show() : void; } // 商品实现类A class ConcreteProductA implements Product{ public function show() : void{ echo "I'm A.\n"; } }
Verwenden Sie auch die Analogie zu Mobiltelefonen: Ich bin ein Großhändler, der Mobiltelefone verkauft (Kunde, Geschäftsseite), und ich benötige eine Charge Mobiltelefone (Produkt A), also habe ich Foxconn (Factory Creator) gebeten, mir bei der Produktion zu helfen . Ich habe Foxconn meine Bedürfnisse erklärt und Foxconn hat zugestimmt, die Arbeit in meiner Hengyang-Fabrik (ConcreatorA) zu erledigen. Es besteht keine Notwendigkeit, zur Hauptfabrik zu gehen. Ihre kleine Bestellung ist nur eine Verschwendung. Dann, nach einer Weile, brauchte ich ein anderes Mobiltelefonmodell (Produkt B). Foxconn schaute es sich an und bat Zhengzhou Foxconn (Concrete Creator B), mir bei der Produktion zu helfen. Egal was passierte, sie gaben mir immer das entsprechende Mobiltelefon. Darüber hinaus weiß das Werk in Zhengzhou nicht, was das Werk in Hengyang produziert hat oder ob es mit mir zusammengearbeitet hat. Das alles wissen nur ich und das Hauptwerk.
Vollständiger Code: Factory-Methodenmuster
https://github.com/zhangyue0503/designpatterns-php/blob/master/02.factory/source/factory.php
Beispiel
Szene: Licht Wenn wir keine falschen Tricks anwenden und die Textnachrichten vom letzten Mal ändern, werden wir immer noch dieselben SMS-Anbieter wie beim letzten Mal verwenden. Schließlich ist es bereits jedem bekannt, aber in Zukunft muss es möglicherweise ersetzt werden. Einkaufszentren sind wie Schlachtfelder, und die Interessen aller sollten an erster Stelle stehen. In diesem Fall können wir es über das Factory-Methodenmuster entkoppeln und problemlos SMS-Anbieter hinzufügen und ändern.SMS-Versandklassendiagramm
// 创建者抽象类 abstract class Creator{ // 抽象工厂方法 abstract protected function FactoryMethod() : Product; // 操作方法 public function AnOperation() : Product{ return $this->FactoryMethod(); } } // 创建者实现类A class ConcreteCreatorA extends Creator{ // 实现操作方法 protected function FactoryMethod() : Product{ return new ConcreteProductA(); } }
Vollständiger Quellcode: SMS-Versand-Factory-Methode
https://github.com/zhangyue0503/designpatterns-php/blob/master/02 .factory/source/factory-message.phpErklärung
Es ist grundsätzlich keine Erklärung für die Implementierung erforderlich die Unterklasse! ! Eine Factory-Unterklasse muss beim Aufrufen des Geschäfts gekoppelt werden. Dies ist in der Tat der Fall. Wenn Sie einen einheitlichen Aufruf wünschen, fügen Sie bitte eine einfache Factory hinzu. Halten Sie sich nicht an die aktuelle Form Klasse. Schnittstelle zum Definieren der Factory-Methode, Verlassen der getMessage()-Methode und direkten externen Aufruf der öffentlichen Vorlagenmethode (factoryMethod)Empfohlenes Lernen: „
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über das Factory-Methodenmuster in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!