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

2021-04-06 18:20:23 字數 1362 閱讀 2188

摘要:介紹了抽象工廠模式的基本概念,並給出了c#語言編寫的程式示例

工廠模式圖:

抽象工廠模式向客戶端提供乙個介面,使得客戶端在不必指定具體型別的情況下,建立多個產品族中的物件。本文採取的仍然是接著以前的那個快餐店的例子。

現在,快餐店經常良好,逐漸發展壯大,為了適合不同地方人的飲食習慣,建立了兩大系列(相當於產品族)快餐,北方系列和南方系列。每個系列分別由乙個大廚掌勺。

抽象工廠模式對新的產品族支援開閉原則,但對新的產品不支援開閉原則。例如增加新的產品族,如增加美國系列快餐(相當於增加了乙個產品族),則只要從每個產品介面繼承乙個相應美國系列產品即可,不需要更改已有的**。但如果增加新產品,比如增加了「饅頭」這個產品,則它是不支援開閉原則的,因為你要在廚師介面中,增加返回「饅頭」的方法,這就要修改已存在的介面,而修改了上層介面,繼承此介面的具體類也要隨之改變。

使用抽象工廠模式的條件:

1 乙個系統不應依賴於產品如何被建立,組合和表達的細節。

2 有多個產品族,而系統只消費其中乙個族中的產品

3 同屬於乙個產品族的產品是在一起使用的。

4 系統提供乙個產品的庫,所有產品都是以同樣的介面實現。

看下面的c#實現:

using system;

namespace abstractfactory

//定義北方廚師,實現廚師介面

class northchef:chef

public rice makerice()

public bread makebread() }

//定義南方廚師,實現廚師介面

class southchef:chef

public rice makerice()

public bread makebread() }

//定義麵條產品

public inte***ce noodle

class northnoodle:noodle }

class southnoodle:noodle }

//定義公尺飯產品

public inte***ce rice

class northrice:rice }

class southrice:rice }

//定義麵包

public inte***ce bread

class northbread:bread }

class southbread:bread }

///

/// 應用程式的主入口點。

///

[stathread]

static void main(string args) }

}

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

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

設計模式筆記 抽象工廠

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

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

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...