iOS设计模式-生成器模式 后记

UML


BUILDER UML

时序图


BUILDER Sequence Chart

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不一定是protocol也可以是抽象类,这主要取决于Builder在初始化中是否有些特殊需求。

5.和STRATEGY对比

将Aggregation改为更加紧密的Composition就是了。并且因为STRATEGY是行为扩展模式,所以不需要getResult方法。
因为BUILDER中builder是对Client开放的,所以更偏向于接口开闭原则。
STRATEGY中因为Strategy是对Client不公开的,所以更加偏向于里氏替换原则。

你可能感兴趣的:(iOS设计模式-生成器模式 后记)