- 定义
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类
- 特点
- 抽象工厂是工厂方法模式的升级版本,用来创建一组相关或者相互依赖的对象
- 工厂方法是针对一个产品等级结构,而抽象工厂则是针对的多个等级结构
- 工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类
- 抽象工厂中
产品族
概念: 是指位于不同产品等级结构中功能相关联的产品组成的家族
- 示例代码
// 产品1 interface IProduct1 { public void show(); } //产品2 interface IProduct2 { public void show(); } class Product1 implements IProduct1 { public void show() { System.out.println("这是1型产品"); } } class Product2 implements IProduct2 { public void show() { System.out.println("这是2型产品"); } } //抽象工厂 interface IFactory { public IProduct1 createProduct1(); public IProduct2 createProduct2(); } class Factory implements IFactory{ public IProduct1 createProduct1() { return new Product1(); } public IProduct2 createProduct2() { return new Product2(); } } public class Client { public static void main(String[] args){ IFactory factory = new Factory(); factory.createProduct1().show(); factory.createProduct2().show(); } }
- 优缺点及适用场景
- 可以在类的内部对产品族进行约束
- 产品族或多或少存在一定关联,抽象工厂就可以在类内部对产品族的关联关系进行定义和描述
- 产品族的扩展比较费劲,所以适用抽象工厂模式时,对产品等级结构的划分是非常重要
- 需要创建一系列相互关联或相互依赖的产品族时,可以使用抽象工厂模式
- 无论简单工厂模式,工厂方法模式,抽象工厂模式都属于工厂模式,其主要目的都是为了解耦
- 使用时,无需关心是何种模式,只需要关心是否能降低耦合度
- 引用
抽象工厂模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一...
- 简单工厂模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一般是alloc一个对象,如果需要创建...