知识卡片

抽象工厂与建造者模式的差异

普通读书笔记卡 · 1854.a.2

内容

抽象工厂模式生产的产品家族整体不可拆分:一个宝马工厂只能产纯宝马配置车,不存在 “宝马引擎+奔驰车轮”混合产品,这是业务上不可行而非技术限制。建造者模式则把车拆成零件, 用可变”蓝图”驱动装配,换一份蓝图就能拼出混合车型,是抽象工厂做不到的。发散:两者分野 本质是”要不要允许打破产品家族边界做自由组合”。

参考来源

- 位置:《设计模式之禅(第2版)》第30章《创建类模式大PK》30.2节(源文件:_epub-src/text/part0138.html) - 结论依据:原文用宝马/奔驰造车案例说明抽象工厂"把一辆车认为是一个完整的、不可拆分的对象……不会出现一个宝马工厂生产奔驰车的情况",而建造者模式通过蓝图可以"立刻生产出一辆混合车型……反观我们的抽象工厂模式,它是不可能实现该功能的"。 - 原始内容:抽象工厂模式把一辆车认为是一个完整的、不可拆分的对象。它注重完整性,一个产品一旦找到一个工厂生产,那就是固定的型号,不会出现一个宝马工厂生产奔驰车的情况……我们就想要一辆混合的车型,如奔驰的引擎,宝马的车轮,那该怎么处理呢?使用我们的建造者模式!……反观我们的抽象工厂模式,它是不可能实现该功能的,因为它更关注的是整体,而不关注到底用的是奔驰引擎还是宝马引擎。