Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1741523
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: C/C++

2012-03-25 19:35:04

当要构建一个复杂对象时,可以把对象拆分为各个部份,客户根据需要利用生成器构建各部份,构建完成后从生成器获得构建好的对象。


  1. class Builder
  2. {
  3. public:
  4.     virtual void BuildPart1() = 0;
  5.     virtual void BuildPart2() = 0;
  6.     virtual Product* GetProduct() = 0;
  7. };

  8. class Client
  9. {
  10.     void Construct()
  11.     {
  12.         Builder* pBuilder = new ConcretBuilder;
  13.         pBuilder->BuildPart1();
  14.         pBuilder->BuildPart2();
  15.         Product* pProduct = pBuilder->GetProduct();
  16.     }
  17. };

生成器经常被用来创建组合结构。

生成器与抽象工厂都提供一系列构建部份的方法。两者的区别:

生成器偏向通过构建部分得到整体,在调用各BuildPart方法后再调用GetProduct得到整体对象。

抽象工厂偏向于构建一系列同一家族的产品,它们可以作为其它产品的部份,但也被视为一个独立的产品。CreatePart会立即返回一个PartProduct。

阅读(1040) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~