抽象工厂模式

129 阅读1分钟

抽象工厂模式

工厂模式的扩展
定义:为创建一组相关或者互相依赖的对象提供接口,无需指定他们的具体类
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

应用场景

一般应用场景在固定类型上,比如说针对不同操作系统的运行,针对不同的交互方式生产不同的产品类