必知必会的设计模式4

抽象工厂模式(Abstract Factory Pattern)

属创建型设计模式,「为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类」

这个模式建议结合工厂方法模式来理解 必知必会的设计模式3,本身这些东西是比较抽象的,所以在理解的时候建议结合一下实际情况中的一些场景,毕竟这些设计模式也是为了解决实际生产问题的,不然要他们有什么用。我在理解抽象工厂模式的时候,也花了些时间,还回头重新整理回顾了工厂方法模式。

在工厂方法模式中我们知道如果一个工厂可以生产多个产品,如果复杂的话会按产品隔离开变成多工厂模式,这里我们先不隔离开,因为各个产品间是有关联的或者说是有某种关系的,例如,大众集团下有 SUV 汽车,轿跑汽车等产品,它们都属于大众集团(这就是关联)。这些产品就叫产品族,例如 SUV 汽车产品族,轿跑汽车产品族。其次,每个产品族还可进行产品等级划分,一个工厂子类负责一个产品等级的产生,例如大众集团的 SUV 汽车产品族可按产品定位分奥迪 SUV,保时捷 SUV,因此也对应着奥迪工厂和保时捷工厂。

抽象工厂模式.jpg

优缺点

  • 高度封装,调用者不用关心产品实现类。
  • 产品族间的关联或约束是内定的,不受外界影响或改变。
  • 产品等级维度的扩展性好。
  • 产品族的扩展性非常差。

适用场景

其实上面对抽象工厂模式的分析过程就是对适用场景的分析。我的理解是基于一个工厂生产多个产品的前提下,如果每个产品(或者部分产品)已经是一个产品族(或者未来是个产品族),并且也会有产品等级的概念,那就可以用抽象工厂模式。不过对于功能较简单的模块,我觉得不太适合用。

在 Android 中的使用

暂未了解到有明显使用抽象工厂模式的地方。

参考内容

「设计模式之禅(第 2 版)」
「Android 源码设计模式解析与实战」

你可能感兴趣的:(必知必会的设计模式4)