抽象工厂模式
工厂模式的扩展
定义:为创建一组相关或者互相依赖的对象提供接口,无需指定他们的具体类
public abstract class Product{
//每个产品的共有方法
public void shareMethod(){
//大家都有的方法
}
//都有但是里面方法作用不一样
public void doSomething();
}
public class ProductA extends Product{
public void doSomething(){
//A产品的A实现
}
}
public class ProductB extends Product{
public void doSomething(){
//B产品的B实现
}
}
//抽象的工厂
public abstract class Factory{
public abstract ProductA creatProductA();
public abstract ProductB creatProductB();
}
public class Factory1 extends Factory{
public ProductA creatProductA(){
return new ProductA1;
}
public ProductB creatProductB(){
return new ProdeuctB1;
}
}
public class Factory2 extends Factory{
public ProductA creatProductA(){
return new ProductA2;
}
public ProductB creatProductB(){
return new ProdeuctB2;
}
}
有多少个等级就有多少个工厂
优点
封装性,每个产品类高层都不关心,只关心接口
产品族内约束在工厂类中
缺点
扩展困难,等级扩展容易,但是当增加类型时扩展困难,比如说增加ProdectC
应用场景
一般应用场景在固定类型上,比如说针对不同操作系统的运行,针对不同的交互方式生产不同的产品类