抽象工厂模式

工厂方法模式 中,当需要新增一个产品 C 的时候,只需要 两个步骤 就满足需求。

所以是遇到什么问题了,需要把工厂方法升级为抽象工厂呢?

提出问题

假设我是一个工厂的老板,工厂生产苹果手机的配件。例如:屏幕、电池。由于业务扩张,现在需要生产手机摄像头,此时参考工厂模式即可。

由于业务再次扩张,华为手机让我帮忙生产配件。此时我就要对配件进行分类,不能在笼统的成为:屏幕或者电池。

分类之后的配件:

按照工厂方法模式,该怎么办呢。按照产品类别分成两个体系即可:

此时,如果业务再次扩展,需要生产摄像头,需要做什么呢?新增一个摄像头体系:

此时,如果业务再次扩展,小米手机也来找我合作,需要做什么呢?在每个体系中增加小米的产品线即可。

其实如果不嫌麻烦,这样一直搞下去也行。不就是一个笛卡尔积嘛,轻轻松松。

假设有 10 个手机品牌都来找我合作,除了屏幕、电池和摄像头,还需要生产:手机壳、背板、听筒、扬声器、边框。随便算算,就是 80 个工厂类和 80 个产品类。

到此,引出了问题,工厂方法模式不能优雅的解决子类数量过多的问题。站在软件设计的角度来看,为笛卡尔积的每一个结果都创建一个工厂类和产品类,也是一种“笨办法”。

如何解决问题

todo

UML 类图

2024010716525267.png