這篇文章帶給大家的內容是關於PHP設計模式:php工廠模式的介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
工廠模式是一種隱藏類別的實例化細節,並且對一系列類別使用相同的實例化方式,可以很方便的擴展更多的實現同一個介面的類別的創建物件的方式。
範例應用程式場景有:
1)線上支付
支付有多種方式,例如微信支付,支付寶支付,銀聯支付等,根據用戶的選擇而採用相應的支付方式;
2 )訪問量統計
在一個業務較複雜的專案中,使用者對不同的物件進行訪問,例如訪問文章、訪問作者、訪問文章目錄等,同樣是訪問記錄,記錄的資訊卻不一樣
工廠模式的原理:
先根據多個物件的相同行為設計一個接口,再讓這幾個類別去實現這個接口,接著製造一個實例化工廠,即可在工廠中根據不同參數實例化不同類。
工廠模式的具體實作:
/* * 形状接口 */interface Shape{ public function area();}/* * 长方形类,实现了形状接口 */class Rectangle implements Shape{ private $long; private $width; function __construct($long,$width) { $this->long = $long; $this->width = $width; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return $this->long * $this->width; } }/* * 正方形类,实现了形状接口 */class Square implements Shape{ private $width; function __construct($width) { $this->width = $width; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return pow($this->width,2); } }/* * 圆形类,实现了形状接口 */class Circle implements Shape{ private $radiu; function __construct($radiu) { $this->radiu = $radiu; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return pi()*pow($this->radiu,2); } }class ShapeFactory{ /* * 获取实例化的形状对象 * ...$args 表示接受不限个数的参数 */ public function getShpae(...$args) { /* * 第一个参数为形状名,后面的参数为形状的尺寸 */ switch($args[0]) { case 'Rectangle': return new Rectangle($args[1],$args[2]); break; case 'Square': return new Square($args[1]); break; case 'Circle': return new Circle($args[1]); break; } return null; } }$factory = new ShapeFactory();$shape = $factory->getShpae('Rectangle',2,3);$area[] = $shape->area();$shape = $factory->getShpae('Square',2);$area[] = $shape->area();$shape = $factory->getShpae('Circle',2);$area[] = $shape->area(); print_r($area);/* Array ( [0] => 6 [1] => 4 [2] => 12.566370614359 ) */
相關文章推薦:
#以上是PHP設計模式:php工廠模式的介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!