知识卡片
工厂方法与建造者模式的意图差异
内容
工厂方法关注产品整体,调用方拿到已组装完毕的完整对象,不干预内部拼装;建造者 模式关注部件构建过程,产品由多部件逐步装配,装配顺序不同结果也不同。类比造超人:工厂 方法直接产出成品超人,建造者模式则先造躯体、注入技能、打标志三步组装。发散:两者调用 方式相似(都是”要一个对象”),但暴露的可控粒度不同,这是[[抽象工厂与建造者模式的差异]] 中”整体不可拆分”与”按蓝图自由组合”这组对立的雏形。
参考来源
- 位置:《设计模式之禅(第2版)》第30章《创建类模式大PK》30.1节(源文件:_epub-src/text/part0137.html)
- 结论依据:原文用超人生产的例子对比两个模式,总结"工厂方法模式关注的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象",并指出建造者"即使是相同的部件,装配顺序不同,产生的结果也不同"。
- 原始内容:工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程……如果使用工厂方法模式,直接产生出来的就是一个力大无穷、能够飞翔、内裤外穿的超人;而如果使用建造者模式,则需要组装手、头、脚、躯干等部分……即使是相同的部件,装配顺序不同,产生的结果也不同,这也正是建造者模式的意图。