建造者模式
个人对uml图的理解和概括:
- Product是有公共部件的,如例子中的各类car,都有engine,wheel,tie等
- Builder是抽象类,BuildPart()可以是BuildEngine()=0;BuildWheel()=0;BuildTie()=0等,公共部件的接口方法
- 具体builder需要实现BuildPart这些接口
- Director拥有的类型是基类Builder指针,但实例化时指向的是具体的builder,所以生成对应的部件
- 最后Construct里用Builder指针(指向子类)build出对应的部件,后面有组装可以增加怎么组装
原型模式
个人理解与总结:
- 仍然是面向接口
- 抽象基类提供接口,如Prototype* Clone(),子类实现
- 基类需要保证自己的构造确保能无损“拷贝”,特别是指针类型的
- 具体类实现Clone,先调用基类的构造,最后自身的数据也需要无损“拷贝”,最终得到新ConcretePrototype*,并返回给外部
目的:
拷贝一个完全一样的对象
适用场景:
- 拷贝当前状态的副本
- 该对象构建过程复杂,想得到一个相同,状态却只有几处或一处不同的新对象
- 该对象动态时才能确定的,动态创建