设计模式(4)抽象工厂模式

97 阅读1分钟

抽象工厂模式

定义

抽象工厂模式的实质是“提供接口,创建一系列相关或独立的对象,而不指定这些对象的具体类。”

单看定义会觉得十分抽象,如果之前了解过简单工厂模式和工厂方法模式,那么可以将抽象工厂模式理解为这两者的结合。

之前的工厂模式每个工厂只能对应类的产品,抽象工厂模式中一个工厂可以生产多个不同的产品(相当于简单工厂模式中一个工厂可以生产多个产品)。首先将工厂分为多个工厂(划分依据可以自定),这其实是工厂模式的思想。然后一个工厂生产多个不同产品,这是简单工厂模式的思想。

示例和代码

//定义抽象工厂和产品
interface AbstractFactory [
    Phone createPhone();
    Pad cretePad();
}

interface Phone {}
interface Pad {}

//Apple系列工厂和产品

class iPhone implements Phone{}
class iPad implements Pad{}

class AppleFactory implements AbstractFactory {
    
    @override
    public Phone createPhone() {
        return new iphone();
    }
    
    @override
    public Pad createPhone() [
        return new iPad();
    }
}

//华为系统工厂和产品
class HuaweiPhone implements Phone{}
class HuaweiPad implements Pad{}

class HuaweiFactory implements AbstractFactory {
    
    @override
    public Phone createPhone() {
        return new HuaweiPhone();
    }
    
    @override
    public Pad createPhone() [
        return new HuaweiPad();
    }
}

总结

抽象工厂模式结合了简单工厂模式和工厂模式,具有两者的优点。但是同样也具有其的缺点,比如因为应用了简单工厂模式的思想,违反了开闭原则。这其实也说明了,六大基本原则只是一种指导思想,并不一定需要全部满足才是好的设计模式,最重要的还是因地制宜,根据实际情况选择合适的设计模式。