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>

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

5.和STRATEGY对比

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容