当要构建一个复杂对象时,可以把对象拆分为各个部份,客户根据需要利用生成器构建各部份,构建完成后从生成器获得构建好的对象。
- class Builder
- {
- public:
- virtual void BuildPart1() = 0;
- virtual void BuildPart2() = 0;
- virtual Product* GetProduct() = 0;
- };
- class Client
- {
- void Construct()
- {
- Builder* pBuilder = new ConcretBuilder;
- pBuilder->BuildPart1();
- pBuilder->BuildPart2();
- Product* pProduct = pBuilder->GetProduct();
- }
- };
生成器经常被用来创建组合结构。
生成器与抽象工厂都提供一系列构建部份的方法。两者的区别:
生成器偏向通过构建部分得到整体,在调用各BuildPart方法后再调用GetProduct得到整体对象。
抽象工厂偏向于构建一系列同一家族的产品,它们可以作为其它产品的部份,但也被视为一个独立的产品。CreatePart会立即返回一个PartProduct。
阅读(1075) | 评论(0) | 转发(0) |