Heim >Backend-Entwicklung >PHP-Tutorial >Eine kurze Diskussion über das einfache Factory-Muster in PHP
Dieser Artikel führt Sie durch das einfache Factory-Muster in PHP-Designmustern. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Beginnen wir mit einer einfachen Fabrik. Ob es sich um ein Interview oder ein Interview mit anderen handelt: Wenn man nach Designmustern fragt, erwähnen die meisten Leute das Fabrikmuster. Es besteht kein Zweifel, dass einige fabrikbezogene Muster die bekanntesten und am weitesten verbreiteten Designmuster sind. GoF-Entwurfsmuster sind auch Schöpfungsmuster.
Wer jedoch diese drei Modi klar erklären kann: Einfache Fabrik, Fabrikmuster und Abstraktes Fabrikmuster, kann den Interviewer wirklich beeindrucken. Hier gilt die Voraussetzung, dass man es wirklich klar erklären kann. Die meisten Menschen, mich eingeschlossen, können es nicht klar erklären, bevor sie sich eingehend mit Designmustern befassen. Egal, ob ich zu einem Vorstellungsgespräch gehe oder jemand anderen interviewe. Wenn ich andere interviewe, kann ich nur einen allgemeinen Überblick geben. Als ich zum Vorstellungsgespräch ging, gab ich nur einen allgemeinen Überblick. Nachdem ich viele Rückschläge erlebt hatte, kam ich auf die Idee, Designmuster eingehend zu erforschen, und so entstand diese Artikelserie. Beginnen wir mit dieser einfachen Fabrik und studieren wir die Designmuster noch einmal eingehend.
Einfache Fabrik, auch statische Fabrik genannt, gehört nicht zu den 23 GoF-Entwurfsmustern. Man kann jedoch sagen, dass es von allen Entwurfsmustern wahrscheinlich für jeden am einfachsten zu verstehen ist und Sie dieses Entwurfsmuster möglicherweise bereits unzählige Male in Ihrem Code verwendet haben. Beginnen wir mit dem einfachsten Codesegment.
// Factory class Factory { public static function createProduct(string $type) : Product { $product = null; switch ($type) { case 'A': $product = new ProductA(); break; case 'B': $product = new ProductB(); break; } return $product; } }
Ja, der Kernpunkt ist der einfache Schaltercode in der Mitte. Wir haben den Rückgabewerttyp als Implementierung der Produktschnittstelle festgelegt.
In diesem Code werden neue PHP-Funktionen verwendet, Parametertyp und Rückgabewerttyp
Produktschnittstelle und Produktimplementierung
// Products interface Product { public function show(); } class ProductA implements Product { public function show() { echo 'Show ProductA'; } } class ProductB implements Product { public function show() { echo 'Show ProductB'; } }
Am Ende ist die Verwendung des Clients sehr einfach
// Client $productA = Factory::createProduct('A'); $productB = Factory::createProduct('B'); $productA->show(); $productB->show();
Von Der obige Code Wie Sie sehen können, handelt es sich tatsächlich um eine Factory-Klasse, die das entsprechende Produkt (Produktobjekt) basierend auf der von uns übergebenen Zeichenfolge oder anderen von Ihnen definierten Bezeichnern zurückgibt.
Eine eher visuelle Metapher: Ich bin ein Großhändler (Kunde, Geschäftsseite), der Mobiltelefone verkauft. Ich benötige eine Menge Mobiltelefone (Produkt), also habe ich Foxconn (Fabrik) gebeten, mir bei der Produktion zu helfen. Ich habe eine Bestellung aufgegeben ($type-Variable) und das Modell angegeben, und dann hat Foxconn mir das Telefon des entsprechenden Modells gegeben, und dann habe ich meine Arbeit fortgesetzt. Es war wirklich angenehm, mit Foxconn zusammenzuarbeiten.
Eine standardisiertere Schreibweise könnte darin bestehen, dass alle Produkte eine einheitliche Schnittstelle implementieren und der Client dann nur weiß, wie er die Schnittstellenmethoden einheitlich aufruft. Wenn es nicht standardisiert ist, können Sie keine Schnittstellen verwenden und verschiedene Objekte zurückgeben, ähnlich dem Fassadenmodus für eine einheitliche Fassadenverwaltung.
Quellcode-Adresse: Einfache Factory-Basisklassendiagramm-Implementierung
https://github.com/zhangyue0503/designpatterns-php/blob/master/01.simple-factory/source/simple-factory.php
Szenario: SMS-Versand-Funktionsmodul. Mittlerweile nutzen wir die SMS-Dienste von drei Händlern, nämlich Alibaba Cloud, Diexin und Jiguang. Mit Simple Factory können verschiedene SMS-Versender diese Anforderung problemlos erfüllen.
Klassendiagramm:
Code:
<?php interface Message { public function send(string $msg); } class AliYunMessage implements Message{ public function send(string $msg){ // 调用接口,发送短信 // xxxxx return '阿里云短信(原阿里大鱼)发送成功!短信内容:' . $msg; } } class BaiduYunMessage implements Message{ public function send(string $msg){ // 调用接口,发送短信 // xxxxx return '百度SMS短信发送成功!短信内容:' . $msg; } } class JiguangMessage implements Message{ public function send(string $msg){ // 调用接口,发送短信 // xxxxx return '极光短信发送成功!短信内容:' . $msg; } } Class MessageFactory { public static function createFactory($type){ switch($type){ case 'Ali': return new AliYunMessage(); case 'BD': return new BaiduYunMessage(); case 'JG': return new JiguangMessage(); default: return null; } } } // 当前业务需要使用极光 $message = MessageFactory::createMessage('Ali'); echo $message->send('您有新的短消息,请查收');
Quellcodeadresse: Einfache Fabrikinstanz – SMS-Sendefabrik
https://github.com/zhangyue0503/designpatterns-php/blob/master / 01.simple-factory/source/simple-factory-message.php
Beschreibung
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über das einfache Factory-Muster in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!