您好,登錄后才能下訂單哦!
小編給大家分享一下PHP設計模式之工廠方法設計模式的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一、什么是工廠方法模式
作為一種創建型設計模式,工廠方法模式就是要創建“某種東西”。對于工廠方法,要創建的“東西”是一個產品,這個產品與創建它的類之間不存在綁定。實際上,為了保持這種松耦合,客戶會通過一個工廠發出請求,再由工廠創建所請求的產品。利用工廠方法模式,請求者只發出請求,而不具體創建產品。
二、什么時候使用工廠方法模式
如果實例化對象的子類可能改變,就要使用工廠方法模式。
三、一般工廠方法模式
使用一般工廠方法模式時,客戶只包含工廠的引用,一個工廠生產一種產品。增加一種產品的同時需要增加一個新工廠類和一個新產品類。
<?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(); /*運行結果: 此處為文本 此處為圖像 */ ?>
四、參數化工廠方法模式
使用參數化工廠方法模式時,客戶包含工廠和產品的引用,發出請求時需要指定產品的種類,一個工廠生產多種產品。增加一種產品時只需要增加一個新產品類即可。
<?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(); /*運行結果: 此處為文本 此處為圖像 */ ?>
以上是“PHP設計模式之工廠方法設計模式的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。