摘要:介紹了抽象工廠模式的基本概念,並給出了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 使用,建立...