抽象工廠模式

2021-07-27 09:49:10 字數 2977 閱讀 1078

如今比薩店成功的關鍵在於新鮮、高質量的原料,而且通過匯入新的框架,加盟點將遵循你的流程,但是有一些加盟店,使用低價原來來增加利潤。你必須採用一些手段,以免長此以往毀了品牌

確保原料一致,你打算建造一家生產原料的工廠,並將原料運送到各家加盟店。那麼問題來了,加盟店坐落於不同的區域,紐約的紅醬料和芝加哥的紅醬料是不一樣的。所以對於紐約和芝加哥你需要準備兩組不同的原料。

芝加哥比薩選單:

芝士披薩:番茄醬料,義大利白乾酪,parmesan乾酪,比薩草。

素食披薩:番茄醬料,義大利白乾酪,parmesan乾酪,茄子,菠菜,黑橄欖。

紐約比薩選單:

芝士披薩:大蒜番茄醬料,reggiano乾酪,大蒜。

素食披薩:大蒜番茄醬料,reggiano乾酪,蘑菇,洋蔥,紅辣椒。

這表明我們有相同的產品家族:麵糰,意式臘腸,醬料,芝士,蔬菜,肉。但是製作方式根據區域不同而有差異。

紐約使用一組原料,而芝加哥使用另一組原料。可能不久之後加州就有了加盟店,到時候又需要運送另外一組區域的原料,接著呢?西雅圖嗎?

想要行得通,必須先清楚如何處理原料家族。

一、首先建造原料工廠

/**

* 建造乙個原料工廠,它是乙個介面

* 這個工廠將負責建立原料家族中的每一種原料。

* @author administrator

* */

public inte***ce pizzaingredientfactory

二、建立紐約原料工廠

/**

* 建立紐約原料工廠

* @author administrator

* 同理,參照本來可以實現chicagopizzaingredientfactory

* */

public class nypizzaingredientfactory implements pizzaingredientfactory

@override

public sauce createsauce()

//以下其他的實現原料具體類,類似做法。

@override

public cheese createcheese()

@override

public veggies createveggies()

@override

public pepperoni createpepperoni()

@override

public clams createclam()

}

三、重做披薩

public abstract class pizza 

void cut()

void box()

public string getname()

public void setname(string name)

public string tostring()

}

四、例項化具體的披薩

/**

* 具體的披薩--芝士披薩

* @author administrator

* 同理,可實現其他具體披薩

* */

public class cheesepizza extends pizza

@override

void prepare()

}

**

* 蛤俐披薩

* @author administrator

* */

public class clampizza extends pizza

/*** pizza的**利用相關的工廠生產原料,所生產的原料依賴所使用的工廠,

* pizza類根本不關心這些原料,它只知道如何製作披薩

*/@override

void prepare()

}

五、再回到披薩店

**

* 披薩店超類

* @author administrator

* */

public abstract class pizzastore

abstract pizza createpize(string type);

}

/**

* 具體的披薩店。

* 當然其他的披薩店也可以參照這個來實現

* @author administrator

* */

public class nypizzastore extends pizzastore else if ("clam".equals(type))

// ....此處省略

return pizza;

}}

六、原料和一些具體的原料。其他的就不貼**了

總結:工廠模式----定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。

設計原則:依賴抽象,不要依賴具體類。

抽象工廠模式 抽象工廠模式

抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...

工廠模式 抽象工廠模式

這裡使用簡單的話來講解工廠模式,不涉及程式設計 什麼是工廠模式呢?我的理解是對抽象介面例項的封裝。假如有乙個介面,有若干的實現類,代表不同的例項。傳統產生物件的方法是直接new乙個出來,對於每個例項都要new,當實現介面的類較多時會很麻煩,並且類的實現也暴露出來了。工廠模式是一種產生物件的模式,使用...

工廠模式 抽象工廠模式

子類父類代換 場景 在不同的條件下,需要建立不同的實現子類時。如網路通訊可以使用tcp udp。可以實現同乙個介面,通過工廠類根據條件 tcp或udp 來例項化不同的子類。這些子類符合黎克特制代換原則。public inte ce tlprotocol public class tcpimpleme...