UML
时序图
BUILDER设计模式总共有三个四个成员,Director、Builder、ConcreteBuilder、Result。
1.为什么Director和Builder是Aggregation关系?
可以这么理解:
1)只有在学校和学生两者共同协作的情况下才能产出“毕业学生”。
2)学校没了学生无法存活。所以是学校聚合学生。
3)学生没了学校依然可以存活。所以学生被学校聚合。
4)学校和学生并不唯一绑定。并不是说只有小明去了太阳小学才能毕业,也不是太阳小学只能教小明一个人。不同的学生和不同的学校之间会产生不同成绩的“毕业学生”。
5)一个学校可以有多中教育方法(construct)
6)小明不仅可以在太阳小学上课,也可以去其他课外补习班上课。
2.这个模式的重点在于Builder
固定思维,领导比员工重要。但是在这个设计模式中真正要下功夫去设计的是Builder。因为无论最后返回Product,还是具体执行操作其实都是Builder在干活。
3.Director中对于Builder属性声明
Director中对于Builder的引用不一定是Strong,根据情况也有可能是Copy。
主要取决于项目需求。一般优先考虑Copy。
4.关于<Builder>
Builder不一定是protocol也可以是抽象类,这主要取决于Builder在初始化中是否有些特殊需求。
5.和STRATEGY对比
将Aggregation改为更加紧密的Composition就是了。并且因为STRATEGY是行为扩展模式,所以不需要getResult方法。
因为BUILDER中builder是对Client开放的,所以更偏向于接口开闭原则。
STRATEGY中因为Strategy是对Client不公开的,所以更加偏向于里氏替换原则。
网友评论