Dieses Mal erkläre ich Ihnen ausführlich den Fall des PHP-Factory-MethodeEntwurfsmusters und was die Hinweise bei der Verwendung des PHP-Factory-Methode-Entwurfsmusters sind Ein praktischer Fall.
1. Was ist das Factory-Methodenmuster
Als kreatives Designmuster dient das Factory-Methodenmuster dazu, „etwas“ zu erschaffen. Bei einer Factory-Methode ist das zu erstellende „Ding“ ein Produkt, und es besteht keine Bindung zwischen dem Produkt und der Klasse, die es erstellt hat. Um diese lose Kopplung aufrechtzuerhalten, stellt der Kunde in der Praxis die Anfrage über eine Fabrik, die dann das gewünschte Produkt erstellt. Beim Factory-Methodenmuster stellt der Anforderer nur eine Anfrage, ohne das Produkt tatsächlich zu erstellen.
2. Wann das Factory-Methodenmuster verwendet werden soll
Wenn sich die Unterklasse des instanziierten Objekts ändern kann, muss das Factory-Methodenmuster verwendet werden.
3. Allgemeines Fabrikmethodenmuster
Bei Verwendung des allgemeinen Fabrikmethodenmusters enthält der Client nur einen Verweis auf die Fabrik und eine Fabrik produziert ein Produkt. Wenn Sie ein Produkt hinzufügen, müssen Sie eine neue Fabrikklasse und eine neue Produktklasse hinzufügen.
<?php /** * 一般工厂方法设计模式 **/ //工厂抽象类 abstract class Factory { protected abstract function produce(); public function startFactory() { $pro = $this->produce(); return $pro; } } //文本工厂 class TextFactory extends Factory { protected function produce() { $textProduct = new TextProduct(); return $textProduct->getProperties(); } } //图像工厂 class ImageFactory extends Factory { protected function produce() { $imageProduct = new ImageProduct(); return $imageProduct->getProperties(); } } //产品类接口 interface Product { public function getProperties(); } //文本产品 class TextProduct implements Product { private $text; function getProperties() { $this->text = "此处为文本"; return $this->text; } } //图像产品 class ImageProduct implements Product { private $image; function getProperties() { $this->image = "此处为图像"; return $this->image; } } //客户类 class Client { private $textFactory; private $imageFactory; public function construct() { $this->textFactory = new TextFactory(); echo $this->textFactory->startFactory() . '<br />'; $this->imageFactory = new ImageFactory(); echo $this->imageFactory->startFactory() . '<br />'; } } $client = new Client(); /*运行结果: 此处为文本 此处为图像 */ ?>
4. Parametrisiertes Factory-Methodenmuster
Bei Verwendung des parametrisierten Factory-Methodenmusters enthält der Kunde Verweise auf die Fabrik und das Produkt und muss den Typ angeben Wenn Sie eine Anfrage stellen, stellen Sie sicher, dass eine Fabrik mehrere Produkte herstellt. Beim Hinzufügen eines Produkts müssen Sie lediglich eine neue Produktkategorie hinzufügen.
<?php /** * 参数化工厂方法设计模式 **/ //工厂抽象类 abstract class Factory { protected abstract function produce(Product $product); public function startFactory(Product $product) { $pro = $this->produce($product); return $pro; } } //工厂实现 class ConcreteFactory extends Factory { protected function produce(Product $product) { return $product->getProperties(); } } //产品类接口 interface Product { public function getProperties(); } //文本产品 class TextProduct implements Product { private $text; public function getProperties() { $this->text = "此处为文本"; return $this->text; } } //图像产品 class ImageProduct implements Product { private $image; public function getProperties() { $this->image = "此处为图像"; return $this->image; } } //客户类 class Client { private $factory; private $textProduct; private $imageProduct; public function construct() { $factory = new ConcreteFactory(); $textProduct = new TextProduct(); $imageProduct = new ImageProduct(); echo $factory->startFactory($textProduct) . '<br />'; echo $factory->startFactory($imageProduct) . '<br />'; } } $client = new Client(); /*运行结果: 此处为文本 此处为图像 */ ?>
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
PHP ermöglicht die Funktion zum Teilen von Bildern
Detaillierte Erläuterung der Anwendungsfälle im PHP-Singleton-Modus
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des PHP-Factory-Methodenentwurfsmusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!