設計模式04 抽象工廠模式

2021-09-22 09:16:28 字數 2196 閱讀 1277

抽象工廠模式是物件的建立模式,它是工廠方法模式的進一步推廣。

抽象工廠模式與工廠方法模式的最大差別就在於工廠方法模式針對的是乙個產品等級結構;而抽象工廠模式則須要面對多個產品等級結構。

如果乙個子系統須要一些產品物件,而這些產品又屬於乙個以上的產品等級結構。

那麼為了將消費這些產品物件的責任和建立這些產品物件的責任切割開來。能夠引進抽象工廠模式。

這種話。消費產品的一方不須要直接參與產品的建立工作,而僅僅須要向乙個公用的工廠介面請求所須要的產品。

長處:(1)分離介面和實現

client使用抽象工廠來建立須要的物件,而client根本就不知道詳細的實現是誰,client僅僅是面向產品的介面程式設計而已。也就是說,client從詳細的產品實現中解耦。

(2)使切換產品族變得easy

由於乙個詳細的工廠實現代表的是乙個產品族,比方上面樣例的從a產品到b產品僅僅須要切換一下詳細工廠。

缺點:(1)不太easy擴充套件新的產品

假設須要給整個產品族加入乙個新的產品,那麼就須要改動抽象工廠,這樣就會導致改動全部的工廠實現類。

通過以下**來熟悉抽象工廠模式:

不同的抽象工廠:

package com.design.abstractfactory;

//每一種牌子的產品負責生產工廠。即不同的廠商負責自己牌子的生產

public abstract class factory1

package com.design.abstractfactory;

public abstract class factory2

不同的詳細工廠:

package com.design.abstractfactory;

//詳細的工廠生產產品

public class concreatefactory1 extends factory1

@override

public iproductb getproductb1()

}

package com.design.abstractfactory;

public class concreatefactory2 extends factory2

@override

public iproductb getproductb2()

}

定義不同的產品介面:

package com.design.abstractfactory;

//定義不同的產品之間的一定具備的標準,用inte***ce實現

public inte***ce iproducta

package com.design.abstractfactory;

public inte***ce iproductb

不同的詳細產品:

package com.design.abstractfactory;

//實現了產品標準實現的一系列詳細產品

public class producta1 implements iproducta

}

package com.design.abstractfactory;

public class producta2 implements iproducta

}

package com.design.abstractfactory;

public class productb1 implements iproductb

}

package com.design.abstractfactory;

public class productb2 implements iproductb

}

client實現:

package com.design.abstractfactory;

public class client

}

測試結果:

a1產品生產a1

b1生產產品b1

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

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

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

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

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

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