class sea{};class earthsea extends sea{};
class marssea extends sea{};
class plains{};
class earthplains extends plains{};
class marsplains extends plains{};
class forest{};
class earthforest extends forest{};
class marsforest extends forest{};
class terrainfactory
function
getsea()
function
getplains()
function
getforest()
}//例項一
$factory = new terrainfactory(new earthplains(),
new earthplains(),
new earthforest());
print_r($factory->getsea());
print_r($factory->getplains());
print_r($factory->getforest());
//例項二
$factory2 = new terrainfactory(new earthsea(),
new marsplains(),
new marsforest());
print_r($factory2->getsea());
print_r($factory2->getplains());
print_r($factory2->getforest());
從上面我們可以看出,這樣的**更具有靈活性,我們可以靈活的建立出多個工廠,而且我們可以靈活的向工廠中傳遞引數,只有符合規定的類即可,例如下面的例子。
class earthtwosea extends sea};//例項三
$factory3 = new terrainfactory(new earthtwosea(-1),
new marsplains(),
new marsforest());
print_r($factory3->getsea());
print_r($factory3->getplains());
print_r($factory3->getforest());
建立型模式 工廠模式and抽象工廠模式
意圖 定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。主要解決 主要解決介面選擇的問題。何時使用 我們明確地計畫不同條件下建立不同例項時。如何解決 讓其子類實現工廠介面,返回的也是乙個抽象的產品。關鍵 建立過程在其子類執行。步驟 建立乙個介面 形狀sh...
建立型模式(抽象工廠模式)
目錄總結 當系統所提供的工廠所需生產的具體產品並不是乙個簡單的物件,而是多個位於不同產品等級結構中屬於不同型別的具體產品時需要使用抽象工廠模式。抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式與工廠方法模式最大的區別在於,工廠方法模式針對的是乙個產品等級結構,而抽象工廠...
建立型模式 抽象工廠模式
抽象工廠 abstractfactory 模式的定義 是一種為訪問類提供乙個建立一組相關或相互依賴物件的介面,且訪問類無須指定所要產品的具體類就能得到同族的不同等級的產品的模式結構。抽象工廠模式是工廠方法模式的公升級版本,工廠方法模式只生產乙個等級的產品,而抽象工廠模式可生產多個等級的產品。產品族 ...