設計模式 抽象工廠模式

2021-08-10 03:49:44 字數 2433 閱讀 6881

個人理解:

1. 抽象工廠模式是簡單工廠模式的公升級版,對多個簡單工廠模式的factory類通過factorymanager進行管理, 工廠管理類通過傳入引數生成相應factory類,factory生成相應產品

2. 抽象工廠類包含元素:產品抽象類、產品實現類、工廠抽象類、工廠實現類、工廠管理類

3. 抽象工廠模式可以對兩級商品的建立進行管理,商品類a、b、c...等多種商品類,a商品類有aa、ab...an等多種產品,b商品類有b1、b2...bn多種產品;factory類有a產品的factory類,b產品的factory類....等等多種商品類的factory類

如下示例**:

1. 產品color&&產品shape的工廠類繼承於同一工廠抽象類 abstractfactory

2. factorymanager為工廠管理類,有靜態方法 getfactory ,通過傳string 引數返回 abstractfactory

抽象工廠模式android原始碼應用

抽象工廠模式在 android 原始碼中的實現相對來說是比較少的,其中乙個比較確切的例子是 android 底層對 mediaplayer 的建立,具體類圖如下所示(在新的標籤頁中開啟該即可):

四種 mediaplaye***ctory 分別會生成不同的 mediaplayer 基類:stagefrightplayer、nuplayerdriver、midfile 和 testplayerstub ,四者均繼承於mediaplayerbase 。

抽象工廠的優點有很多,乙個顯著的優點是分離介面與實現,客戶端使用抽象工廠來建立需要的物件,它根本就不知道具體的實現是誰,客戶端只是面向產品的介面程式設計而已,使其從具體的產品實現中解耦,同時基於介面與實現的分離,使抽象工廠模式在切換產品類時更加靈活、容易。

當然缺點也是很明顯的,第乙個也是最明顯的就是類檔案的大大增多,第二個是如果要擴充套件新的產品類,就需要去修改抽象工廠類的最下層介面,這就會導致所有的具體工廠類均會被修改。

**示例:

工廠管理類:

public class factorymanager else if (factorytype.equals(constants.extra_factory_type_shape

))else }}

抽象工廠類:

public abstract class abstractfactory
產品color工廠實現類:

public class colo***ctory extends abstractfactory 

if (colortype.equals(constants.extra_color_blue

)) else if (colortype.equals(constants.extra_color_red

))else

}@override

public shape getshape(string shapetype)

}

產品color抽象類:

public abstract class color
產品color實現類:

public class bluecolor extends color 

}

public class redcolor extends color 

}

產品shape工廠實現類:

public class shapefactory extends abstractfactory 

@override

public shape getshape(string shapetype)

if (shapetype.equals(constants.extra_shape_circle

)) else if (shapetype.equals(constants.extra_shape_rectangle

)) else if (shapetype.equals(constants.extra_shape_square

))else }}

產品shape抽象類:

public abstract class shape
產品shape實現類:

public class shapecircle extends shape 

}

public class shaperectangle extends 

shape

}

public class 

shapesquare

extends shape

}

3. 工廠管理類通過傳入引數生成相應factory類,factory生成相應產品

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

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

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

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

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

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