关系
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
类型:创建类模式
代码
产品
interface IProduct2 {public void show();}class Product1 implements IProduct1 {@Overridepublic void show() {System.out.println("这是产品1");}}class Product2 implements IProduct2 {@Overridepublic void show() {System.out.println("这是产品2");}}
工厂
interface IFactory {public IProduct1 createProduct1();public IProduct2 createProduct2();}class Factory implements IFactory {@Overridepublic IProduct1 createProduct1() {return new Product1();}@Overridepublic IProduct2 createProduct2() {return new Product2();}}
调用类
class Client {public static void main(String[] args) {IFactory factory = new Factory();factory.createProduct1().show();factory.createProduct2().show();}}
优缺点
抽象工厂模式的优点
抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联,抽象工厂模式就可以在类内部对产品族的关联关系进行定义和描述,而不必专门引入一个新的类来进行管理。
抽象工厂模式的缺点
产品族的扩展将是一件十分费力的事情,假如产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改。所以使用抽象工厂模式时,对产品等级结构的划分是非常重要的。
