一、概念
抽象工廠模式(abstract factory pattern)是圍繞乙個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供物件
抽象工廠是簡單工廠的再一次針對於工廠的抽象,其過程為在簡單工廠上新增了一層獲取工廠,讓後通過工廠獲取產品。
乙個工廠生產乙個系列的產品(為了方便單個工廠具體只生產乙個系列),乙個系列的產品擁有著大部分的共性,想要生產
多個系列的產品就需要多個工廠,那麼就需要抽象工廠了,工廠的共性就是生產產品(簡單理解)。例如海爾集團下有生產
冰箱、洗衣機,空調等。各自有自己的工廠,單個工廠只負責生產冰箱、洗衣機或空調。海爾集團為了管理這些工廠及自己
旗下的不同的系列的產品,就抽象出乙個工廠規則來管理所有的工場,這個規則就是超級工廠的實現及抽象的工廠。
就是產品有產品的是抽象,工廠有工廠的抽象,通過工廠的抽象來生產產品。如上,海爾集團有乙個部門管理工廠,工
廠管理自己的產品,當想要生產一台冰箱時過程如下 集團 —> 工廠管理部門—>工廠—>產品。
圖**只是貼出abstractfactory以及factoryproductor
public
inte***ce abstractfactory{
abstract t getfactory(int
type);
所有的工場實現了該類。t為實現了本類工廠類產品的抽象類。如shapfactory的泛型為shape.
public
class shapefactory implements abstractfactory{
* @param type 0:circle 1:rectangle 2:********
@override
public shape getfactory(int
type) {
shape shape = null;
switch (type) {
case 0:
shape = new circle();
break;
case 1:
shape = new rectangle();
break;
case 2:
shape = new ********();
break;
return
shape;
上面的類就是shape的工廠類具體實現
下方為工廠生產類,用來生產工廠及用來例項化工廠,提供醫用給外界
public
class factoryproductor {
* @param type 0:colo***ctory 1:shapefactory
public
abstractfactory getfactory(int
type){
abstractfactory
factory = null;
switch (type) {
case 0:
factory = new colo***ctory();
break;
case 1:
factory = new shapefactory();
break;
return
factory;
對於工廠進行抽象,不同的產品使用不同的抽象,這樣每一次新加乙個新的產品就需要新增兩個類,乙個是工廠,乙個是產品。由使用產品的地方來判斷建立工廠的邏輯。
抽象工廠模式 抽象工廠模式
抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...
工廠模式 抽象工廠模式
這裡使用簡單的話來講解工廠模式,不涉及程式設計 什麼是工廠模式呢?我的理解是對抽象介面例項的封裝。假如有乙個介面,有若干的實現類,代表不同的例項。傳統產生物件的方法是直接new乙個出來,對於每個例項都要new,當實現介面的類較多時會很麻煩,並且類的實現也暴露出來了。工廠模式是一種產生物件的模式,使用...
工廠模式 抽象工廠模式
子類父類代換 場景 在不同的條件下,需要建立不同的實現子類時。如網路通訊可以使用tcp udp。可以實現同乙個介面,通過工廠類根據條件 tcp或udp 來例項化不同的子類。這些子類符合黎克特制代換原則。public inte ce tlprotocol public class tcpimpleme...