在创建型模式里面还有两个就是builder 和 prototype
1 生成器模式
生成者模式和工厂模式有点像,都是封装了创建对象的过程,创建出对象,但builder模式强调一步步创建,不同的输入参数,同样的创建过程而创建出不同的对象,在builder里面,对象一般是比较复杂并由很多对象组成的,每一步创建出其中的一部分;另外创建者模式不像工厂模式一样直接返回对象,而是提供一个接口来得到对象。其类关系图如下
其中Director提供一个调用Builder里面各个BuildX的函数,创建出Product对象,但并不直接返回,而是调用Builder类里面的GetProduct函数返回对象。另外,Director虽然调用BuildeX的顺序一样,但是具体的ConcreteBuilder不一样,创建出来的对象是不一样的。
2 原型模式(prototype)
原型模式其实很简单,那就是提供接口,克隆一个和自己一样的对象。其类关系图如下
其实在C++里面,这个功能可以通过拷贝构造函数或重载赋值运算符来实现