設計模式 抽象工廠模式

2021-09-29 03:56:23 字數 2220 閱讀 1384

抽象工廠模式是對工廠方法模式的擴充套件。工廠方法模式裡,每個工廠只能建立乙個對應的商品。抽象工廠模式裡,工廠的介面裡是一系列創造抽象產品的方法,而不再是乙個,抽象產品也不再是乙個了,而是一系列相關的產品。

假設有兩個生產產商 factory1(聯想) 和 factory2(華碩),這兩個廠商都會生產商品 producta(電腦) 和 product b(滑鼠)。但兩個產商生產的電腦和滑鼠又是不同的,分別記為 producta1(聯想電腦),productb1(聯想滑鼠),producta2(華碩電腦),productb2(華碩滑鼠)。

對於每個商品來講,都有乙個抽象介面,定義了商品的方法。

電腦介面 iproducta

public

inte***ce

iproducta

滑鼠介面 iproductb

public

inte***ce

iproductb

聯想電腦類 producta1

public

class

producta1

implements

iproducta

}

華碩電腦類 producta2

public

class

producta2

implements

iproducta

}

聯想滑鼠類 productb1

public

class

productb1

implements

iproductb

}

華碩滑鼠類 productb2

public

class

productb2

implements

iproductb

}

對於產商來講,也有乙個介面,定義了生產電腦和滑鼠的介面方法。

介面 ifactory

public

inte***ce

ifactory

聯想公司 factory1

public

class

factory1

implements

ifactory

@override

public iproductb createproductb()

}

華碩公司 factory2

public

class

factory2

implements

ifactory

@override

public iproductb createproductb()

}

測試類 test

public

class

test

}

執行結果

由於抽象工廠定義後,抽象產品的個數就已經固定,所以最好在抽象產品的個數不太會變化的情況下使用抽象工廠模式。

簡單工廠模式——工廠方法模式——抽象工廠模式,總結如下:

工廠方法模式彌補了簡單工廠模式對修改開放的弊端,工廠方法模式模式遵循了開閉原則

從工廠方法模式進化到抽象工廠模式,是因為抽象工廠彌補了工廠方法只能創造乙個系列的產品的弊端。

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

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

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

提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...

抽象工廠模式 設計模式(九) 抽象工廠模式

提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...