知识卡片
导演类把顺序决策封装成命名方法
内容
[[建造者模式的定义与四个角色]]中的Director解决痛点:若每次现场拼装顺序,客户要多少种 组合场景类就要写多少遍。Director把顺序方案封装成具名方法(如getABenzModel),调用方 只需说”给我A型号”,不必关心顺序。发散:若sequence是类成员变量而非局部变量,每次构建 开头都要clear,否则历史数据会污染下一次结果。
参考来源
- 位置:《设计模式之禅(第2版)》第11章《建造者模式》(源文件:_epub-src/text/part0047.html)
- 结论依据:原文展示Director类为不同顺序的车型定义getABenzModel/getBBenzModel/getCBMWModel/getDBMWModel等具名方法,每个方法开头调用this.sequence.clear()后再拼装顺序,并强调"ArrayList和HashMap如果定义成类的成员变量,那你在方法中的调用一定要做一个clear的动作,以防止数据混乱"。
- 原始内容:找一个导演,指挥各个事件的先后顺序,然后为每种顺序指定一个代码,你说一种我们立刻就给你生产处理……上面每个方法都有一个this.sequence.clear()……一定要做一个clear的动作,以防止数据混乱。