个人博客
http://www.milovetingting.cn
抽象工厂模式
模式介绍
抽象工厂模式,也是创建型设计模式之一。
模式的定义
为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定它们的具体类。
使用场景
一个对象族有相同的约束时可以使用抽象工厂模式。如,Android,ios都有短信软件和拨号软件,两者都属于软件的范畴,但它们所在的操作系统平台不一样,这时可以使用抽象工厂模式来实现。
简单实现
抽象产品类
1 2 3 4 5 6 7 8 9 10 11
| public abstract class AbstractProductA {
public abstract void method();
}
public abstract class AbstractProductB { public abstract void method();
}
|
抽象工厂类
1 2 3 4 5 6 7
| public abstract class AbstractFactory { public abstract AbstractProductA createProductA(); public abstract AbstractProductB createProductB();
}
|
具体产品类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| public class ProductA1 extends AbstractProductA{
@Override public void method() { }
}
public class ProductA2 extends AbstractProductA{
@Override public void method() { }
}
public class ProductB1 extends AbstractProductB{
@Override public void method() { }
}
public class ProductB2 extends AbstractProductB {
@Override public void method() {
}
}
|
具体工厂类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public class Factory1 extends AbstractFactory{
@Override public AbstractProductA createProductA() { return new ProductA1(); }
@Override public AbstractProductB createProductB() { return new ProductB1(); }
}
public class Factory2 extends AbstractFactory {
@Override public AbstractProductA createProductA() { return new ProductA2(); }
@Override public AbstractProductB createProductB() { return new ProductB2(); }
}
|
小结
抽象工厂模式优点:
分离接口与实现
抽象工厂模式缺点:
一是类文件的爆炸性增加,二是不太容易扩展新的产品类,因为每增加一个产品类就需要修改抽象工厂。