抽象工厂模式
2015-08-24 本文已影响58人
ting723
- 定义
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类
- 特点
- 抽象工厂是工厂方法模式的升级版本,用来创建一组相关或者相互依赖的对象
- 工厂方法是针对一个产品等级结构,而抽象工厂则是针对的多个等级结构
- 工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类
- 抽象工厂中
产品族
概念: 是指位于不同产品等级结构中功能相关联的产品组成的家族
- 示例代码
// 产品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(); } }
- 优缺点及适用场景
- 可以在类的内部对产品族进行约束
- 产品族或多或少存在一定关联,抽象工厂就可以在类内部对产品族的关联关系进行定义和描述
- 产品族的扩展比较费劲,所以适用抽象工厂模式时,对产品等级结构的划分是非常重要
- 需要创建一系列相互关联或相互依赖的产品族时,可以使用抽象工厂模式
- 无论简单工厂模式,工厂方法模式,抽象工厂模式都属于工厂模式,其主要目的都是为了解耦
- 使用时,无需关心是何种模式,只需要关心是否能降低耦合度
- 引用