設計模式筆記 抽象工廠

2021-07-11 12:05:37 字數 1847 閱讀 1746

好比如說,乙個部落格頁面有個換膚系統。那麼假如有兩套風格,黑和白。那麼,我選擇了黑色風格的,實際這步就相當通過換膚系統這個工廠製造器,建立出乙個黑色主題的工廠,該黑色主題的工廠內可以生產各種黑色風格的產品,比如黑色頭像掛飾,黑色背景,黑色的***等,然後通過這些黑色主題產品完成了整個換膚操作。白色主題也如此。

好吧,上次以水果工廠作為乙個類,那麼這次要建立乙個蔬菜工廠,水果和蔬菜這兩類都屬於種植物,那麼我們就可以根據這一共同點抽象出乙個種植物抽象類,即種植物工廠。

首先,建立產品類,包括上次的水果,和現在的蔬菜,他們都實現了水果類介面和蔬菜類介面:

水果系列:

public inte***ce fruit
@override

public void printinfo()

}

public class banana implements fruit

}

public class orange implements fruit

}

接著是蔬菜系列:

public inte***ce vegetable
public class tomato implements vegetable

}

public class cabbage implements vegetable

}

public class eggplant implements vegetable

}

然後,是它們各自的工廠類:

水果工廠:

public class fruitfactory extends plantfactory

if(fruittype==banana)

if(fruittype==orange)

return null;

} @override

vegetable getvegetable(int vegetabletype)

}

蔬菜工廠:

public class vegetablefactory extends plantfactory 

@override

public vegetable getvegetable(int vegetabletype)

if(vegetabletype==tomato)

if(vegetabletype==eggplant)

return null;

}}

可以看到,它們都是屬於種植物這一類,所以都是繼承了種植工廠類

public abstract class plantfactory
最後,提供乙個工廠生產器,即生產工廠的工廠:

public class plantation 

if(factorytype==vegetable)

return null;

}}

好吧,寫個main測試下:

public static void main(string args)
結果:

雖然工廠設計模式在獲取產品類時很方便,但實際上產品的需求越嚴格,那麼內部系統則越發龐大複雜,對於生產一些小產品來說,使用這麼複雜龐大的系統反而浪費資源。

設計模式筆記 抽象工廠模式

抽象工廠模式向客戶端提供乙個介面,使得客戶端在不必指定具體型別的情況下,建立多個產品族中的物件。本文採取的仍然是接著以前的那個快餐店的例子。現在,快餐店經常良好,逐漸發展壯大,為了適合不同地方人的飲食習慣,建立了兩大系列 相當於產品族 快餐,北方系列和南方系列。每個系列分別由乙個大廚掌勺。抽象工廠模...

設計模式筆記 抽象工廠模式

摘要 介紹了抽象工廠模式的基本概念,並給出了c 語言編寫的程式示例 工廠模式圖 抽象工廠模式向客戶端提供乙個介面,使得客戶端在不必指定具體型別的情況下,建立多個產品族中的物件。本文採取的仍然是接著以前的那個快餐店的例子。現在,快餐店經常良好,逐漸發展壯大,為了適合不同地方人的飲食習慣,建立了兩大系列...

設計模式學習筆記 抽象工廠模式

定義 為建立一組相關或相互依賴的物件提供一組介面,而且無需指定它們的具體類。抽象工廠模式是工廠模式的公升級版本,因為它應對的是更加複雜的業務,即當有多個業務品種 業務分類時,通過抽象工廠模式產生需要的物件是一種非常好的解決方式。由於抽象工廠類較為複雜,我覺得使用乙個具體的例子,更能形象的表達這個模式...