設計模式系列(建立型模式)之二 抽象工廠模式

2021-10-23 22:49:22 字數 1622 閱讀 7017

抽象工廠模式(abstract factory pattern)是一種為訪問類提供乙個建立一組相關或相互依賴物件的介面,且訪問類無須指定所要產品的具體類就能得到同族的不同等級的產品的模式結構。

抽象工廠模式是工廠方法模式的公升級版本,工廠方法模式只生產乙個等級的產品,而抽象工廠模式可生產多個等級的產品。

使用抽象工廠模式一般要滿足以下條件。

系統中有多個產品族,每個具體工廠建立同一族但屬於不同等級結構的產品。

系統一次只可能消費其中某一族產品,即同族的產品一起使用。

優點:具體產品從客戶端**中抽離出來,解耦。

將乙個系列的產品族統一到一起建立。

缺點:拓展新的功能困難,需要修改抽象工廠的介面;

所以抽象工廠模式適合那些功能相對固定的產品族的建立。

抽象工廠模式的主要角色如下:

抽象工廠(abstract factory):提供了建立產品的介面,它包含多個建立產品的方法 ,可以建立多個不同等級的產品。

具體工廠(concrete factory):主要是實現抽象工廠中的多個抽象方法,完成具體產品的建立。

抽象產品(product):定義了產品的規範,描述了產品的主要特性和功能,抽象工廠模式有多個抽象產品。

具體產品(concreteproduct):實現了抽象產品角色所定義的介面,由具體工廠來建立,它 同具體工廠之間是多對一的關係。

1.定義乙個水果的抽象類,有吃和買兩個行為

public

abstract

class

fruit

2.建立水果的實現類香蕉

public

class

banana

extends

fruit

@override

public

void

buy(

)}

3.定義乙個香蕉**的抽象類,裡面有乙個付錢的行為

public

abstract

class

price

4.建立香蕉**的實現類

public

class

bananaprice

extends

price

}

5.定義乙個水果工廠的抽象類,裡面有獲取水果和獲取**兩個行為

public

abstract

class

fruitfactory

6.建立水果工廠的實現類香蕉工廠

public

class

bananafactory

extends

fruitfactory

@override

public price getprice()

}

7.測試輸出

public

class

test

}//輸出

//想吃香蕉啊

//去買乙個

//付了3元

設計模式 抽象工廠 建立型模式

介紹了簡單工廠與工廠方法之後,現在我們來看一下工廠三兄弟的最後乙個 抽象工廠。那什麼是抽象工廠呢?抽象工廠模式 abstract factory pattern 提供乙個建立一系列相關或相互依賴物件 的介面,而無須指定它們具體的類。抽象工廠模式又稱為kit模式,屬於物件建立型模式。說起來,抽象工廠與...

設計模式系列(結構型模式)之二 裝飾模式

在不改變原有物件的基礎之上,動態地將額外的功能附加到該物件上,提供了比繼承更有彈性的替代方案。適用於 拓展乙個類的功能 動態給物件新增功能,並且動態撤銷。優點 繼承的有力補充,不改變原有物件的情況下給物件拓展功能 通過使用不同的裝飾類 不同的組合方式,實現不同的效果。符合開閉原則。缺點 裝飾模式增加...

設計模式系列(行為型模式)之二 迭代器模式

迭代器 iterator 模式的定義 提供乙個物件來順序訪問聚合物件中的一系列資料,而不暴露聚合物件的內部表示。迭代器模式是一種物件行為型模式 優點訪問乙個聚合物件的內容而無須暴露它的內部表示。遍歷任務交由迭代器完成,這簡化了聚合類。它支援以不同方式遍歷乙個聚合,甚至可以自定義迭代器的子類以支援新的...