1.模式定义
抽象工厂模式(AbstractFactory Pattern)提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类。抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品。
2.设计原则
(1)多用对象组合,少用继承
(2)针对抽象编程,不针对实现编程
(3)产品对象通过工厂暴露的方法创建
3.使用场合
(1)创建产品家族,相关产品集合在一起使用的时候;
(2)想要提供一个产品类库,并只想显示其接口而不是实现时;
(3)通过组合的方式使用工厂时。
4.实例:
将Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现:
public abstract class Factory{
public abstract Sample creator();
public abstract Sample2 creator(Stringname);
}
public class SimpleFactory extends Factory{
public Sample creator(){
.........
return new SampleA
}
public Sample2 creator(String name){
.........
return new Sample2A
}
}
public class BombFactory extends Factory{
public Sample creator(){
......
return new SampleB
}
public Sample2 creator(String name){
......
return new Sample2B
}
}