設計模式 抽象工廠模式

2022-02-09 09:37:59 字數 1572 閱讀 8334

抽象工廠模式

一.什麼是抽象工廠?

傳統理解:抽象工廠模式是所有形態的工廠模式最為抽象和最具一般性的一一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供乙個介面,使客戶端在不必指定產品的具體的情況下,建立多個產品族中的產品物件。根據黎克特制替換原則,任何接受父型別的地方,都應當能夠接受子型別。因此,實際上系統所需要的,僅僅是型別與這些抽象產品角色相同的例項,而不是這些抽象產品的例項。換言之,也就是這些抽象產品的具體子類的例項。工廠類負責建立抽象產品的具體子類的例項。

個人理解:抽象工廠就是指返回多個抽象類中需要的具體子類的例項。(不管怎麼做折騰目的是得到具體子類的例項。)

二.案例:

還是用皮具廠的例子把!

首先老闆接到一訂單,客戶要求皮具廠生產皮包(錢包,旅行包,揹包,電腦包),老闆有兩個工廠,都可以生產錢包,旅行包,揹包,電腦包,於是乎,老闆將訂單分配給兩個工廠,乙個工廠生產錢包,乙個工廠生產旅行包。

接下來我們就用程式設計來實現吧。

二.demo:

為了大家能動腦動手,我就寫了乙個產品,大家可以再增加乙個產品如:旅行包,揹包,電腦包等等。

抽象工廠:增加乙個產品的時候,直接在抽象工廠裡增加乙個抽象方法即可;

///

///抽象工廠

/// public

abstract

class

abstractfactory

具體工廠:當增加乙個產品時,增加乙個具體工廠即可;

///

///具體工廠(錢包)

/// public

abstract

class

walletfactory : abstractfactory_demo.abstractfactory.abstractfactory

}

抽象產品:當增加乙個產品時,增加乙個抽象類即可;

///

///抽象產品(錢包)

/// public

abstract

class

abstractproduct

具體產品:增加乙個產品時,增加乙個具體產品類即可;

///

///具體產品(錢包)

/// public

class

wallet : abstractproduct.abstractproduct

}

呼叫:當增加了乙個產品後,直接在這裡可以切換;

class

program

}

三.注意:

1. 具體產品抽象出乙個抽象產品;

錢包---------------包

2.具體工廠抽象出乙個抽象工廠;

錢包工廠----------包工廠

邏輯與思維,質的變化。

---------邏輯思維

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

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

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

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

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

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