個人理解:
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產品color抽象類:if (colortype.equals(constants.extra_color_blue
)) else if (colortype.equals(constants.extra_color_red
))else
}@override
public shape getshape(string shapetype)
}
public abstract class color產品color實現類:
public class bluecolor extends color}
public class redcolor extends color產品shape工廠實現類:}
public class shapefactory extends abstractfactory產品shape抽象類:@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 }}
public abstract class shape產品shape實現類:
public class shapecircle extends shape}
public class shaperectangle extendsshape
}
public class3. 工廠管理類通過傳入引數生成相應factory類,factory生成相應產品shapesquare
extends shape
}
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
抽象工廠模式 常用設計模式 抽象工廠模式
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...
抽象工廠模式 設計模式(九) 抽象工廠模式
提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...