创建型模式4-生成器模式
生成器模式(builder)
意图
将一个复杂对象的构建与它的的表示分离,使得同样的构建过程可以创建不同的表示。
问题思考
设计一个HTTP请求对象,用户可能会添加很多http参数,比如:zip,http版本。我们可以设计不同版本的构造函数。但我们构造函数的个数就要跟http参数一样多。
适用性
- 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的构造方式的时候
- 当构造过程必须允许被构造的对象有不同的表示的时候
类图
实现
class Builder {
public:
Builder& BuildPart1();
Builder& BuildPart2();
Builder& BuildPart3();
Product GetResult(); // method name also could be Build()
};
注意:这里Builder也可以设置为一个抽象类,然后一个子builder来实现具体的build操作(《设计模式》中采用的是这种方式)。方法名也可以取成其他的。