抽象工厂模式
定义
抽象工厂模式的实质是“提供接口,创建一系列相关或独立的对象,而不指定这些对象的具体类。”
单看定义会觉得十分抽象,如果之前了解过简单工厂模式和工厂方法模式,那么可以将抽象工厂模式理解为这两者的结合。
之前的工厂模式每个工厂只能对应类的产品,抽象工厂模式中一个工厂可以生产多个不同的产品(相当于简单工厂模式中一个工厂可以生产多个产品)。首先将工厂分为多个工厂(划分依据可以自定),这其实是工厂模式的思想。然后一个工厂生产多个不同产品,这是简单工厂模式的思想。
示例和代码
//定义抽象工厂和产品
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();
}
}
总结
抽象工厂模式结合了简单工厂模式和工厂模式,具有两者的优点。但是同样也具有其的缺点,比如因为应用了简单工厂模式的思想,违反了开闭原则。这其实也说明了,六大基本原则只是一种指导思想,并不一定需要全部满足才是好的设计模式,最重要的还是因地制宜,根据实际情况选择合适的设计模式。