簡單工廠模式(****** factory pattern)屬於類的創新型模式,又叫靜態工廠方法模式(static factorymethod pattern),是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。uml圖簡單工廠模式中包含的角色及其相應的職責如下:
工廠角色(creator):這是簡單工廠模式的核心,由它負責建立所有的類的內部邏輯。當然工廠類必須能夠被外界呼叫,建立所需要的產品物件。
抽象(product)產品角色:簡單工廠模式所建立的所有物件的父類,注意,這裡的父類可以是介面也可以是抽象類,它負責描述所有例項所共有的公共介面。
具體產品(concrete product)角色:簡單工廠所建立的具體例項物件,這些具體的產品往往都擁有共同的父類。
具體的產品繼承自抽象產品,然後由簡單工廠類進行例項化。具有較好的可維護性和擴充套件性。
如果我們需要修改某個產品時,只需要修改對應的產品類,並不會影響其他的產品類。我們新增乙個產品的時候也很方便,只需要新建乙個產品類,然後再工廠模式的switch語句新增判斷就行了。
簡單工廠模式的概念並不難理解,只是自己用的還不多,日後慢慢體會吧。
下面是《大話設計模式》裡面的例子—設計乙個加減乘除的程式,做了簡單修改。
首先是我們的抽象產品類base
base.php
<?php
abstract
class
base
function
setparm
($numa,$numb)
abstract
function
calculate
();}
然後是四個具體產品類add、subtract、multiply、divide
add.php
<?php
class
addextends
base
}
subtract.php
<?php
class
subtract
extends
base
}
multiply.php
<?php
class
multiply
extends
base
}
divide.php
<?php
class
divide
extends
base
else}}
接下來是我們的工廠類factory.php
<?php
require_once
"./fun/base.php";
class
factory
return
$operater;
}}//自動載入所需類
spl_autoload_register(function
($class));
最後是呼叫相關類的index.php
<?php
require_once "factory.php";
$oper = factory::createoperate("+");
$oper->setparm(2,3);
$oper->calculate();
$res = $oper->getresult();
echo $res;
工廠模式 簡單工廠
簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...
工廠模式 簡單工廠
工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...
簡單工廠模式,工廠模式,抽象工廠模式
三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...