Cette fois, je vous apporte une explication détaillée du cas PHP Factory MethodDesign Pattern, quelles sont les Notes lors de l'utilisation du cas PHP Factory Method Design Pattern, ce qui suit est un cas pratique, jetons-y un coup d'œil une fois.
1. Qu'est-ce que le modèle de méthode d'usine
En tant que modèle de conception créationnelle, le modèle de méthode d'usine consiste à créer "quelque chose". Avec une méthode d'usine, la « chose » à créer est un produit, et il n'y a aucune liaison entre le produit et la classe qui l'a créé. En pratique, pour maintenir ce couplage lâche, le client fait la demande via une usine, qui crée ensuite le produit demandé. Avec le modèle de méthode d'usine, le demandeur fait uniquement une demande sans créer réellement le produit.
2. Quand utiliser le modèle de méthode d'usine
Si la sous-classe de l'objet instancié peut changer, le modèle de méthode d'usine doit être utilisé.
3. Modèle de méthode d'usine générale
Lors de l'utilisation du modèle de méthode d'usine générale, le client ne contient qu'une référence à l'usine et une usine fabrique un produit. Lors de l'ajout d'un produit, vous devez ajouter une nouvelle classe d'usine et une nouvelle classe de produit.
<?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. Modèle de méthode d'usine paramétré
Lors de l'utilisation du modèle de méthode d'usine paramétré, le client contient des références à l'usine et au produit, et doit le spécifier. le produit lors d'une demande, une usine fabrique plusieurs produits. Lors de l'ajout d'un produit, il vous suffit d'ajouter une nouvelle catégorie de produits.
<?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(); /*运行结果: 此处为文本 此处为图像 */ ?>
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
PHP fait fonctionner le partage d'images
Explication détaillée des cas d'utilisation du mode PHP singleton
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!