Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1436487
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: C/C++

2014-02-22 21:28:35

1、建造者模式作用:
    将复杂对象的构建和他的表示分离,实现同样的建造过程创建不同对象。只需指定建造的类型无需要管具体的建造细节就可以得到他们。

2、建造者模式实现:
    一个将方法全抽象,子类实现父类方法,创建对象的类根据相应子类执行相应操作。

3、UML类图

4、示例代码:

点击(此处)折叠或打开

  1. #include <iostream>

  2. using namespace std;

  3. class BuilderMan
  4. {
  5. public:
  6.     virtual void BuildHead() = 0;
  7.     virtual void BuildHands() = 0;
  8.     virtual void BuildBody() = 0;
  9.     virtual void BuildLegs() = 0;
  10. };

  11. class ThinBuilder : public BuilderMan
  12. {
  13. public:
  14.     void BuildHead()
  15.     {
  16.         cout<<"瘦的头\n";
  17.     }
  18.     void BuildHands()
  19.     {
  20.         cout<<"瘦的手\n";
  21.     }
  22.     void BuildBody()
  23.     {
  24.         cout<<"瘦的身体\n";
  25.     }
  26.     void BuildLegs()
  27.     {
  28.         cout<<"瘦的腿\n";
  29.     }
  30. };

  31. class FatBuilder : public BuilderMan
  32. {
  33. public:
  34.     void BuildHead()
  35.     {
  36.         cout<<"胖的头\n";
  37.     }
  38.     void BuildHands()
  39.     {
  40.         cout<<"胖的手\n";
  41.     }
  42.     void BuildBody()
  43.     {
  44.         cout<<"胖的身体\n";
  45.     }
  46.     void BuildLegs()
  47.     {
  48.         cout<<"胖的腿\n";
  49.     }
  50. };

  51. class DrawMan
  52. {
  53. public:
  54.     DrawMan(BuilderMan* Man)
  55.     {
  56.         pBuilderMan = Man;
  57.     }

  58.     void CreateMan()
  59.     {
  60.         pBuilderMan->BuildHead();
  61.         pBuilderMan->BuildBody();
  62.         pBuilderMan->BuildHands();
  63.         pBuilderMan->BuildLegs();
  64.     }

  65. private:
  66.     BuilderMan* pBuilderMan;

  67. };

  68. void main()
  69. {
  70.     cout<<"hello world!\n"<<endl;
  71.     FatBuilder* Man = new FatBuilder();
  72.     DrawMan* pDrawMan = new DrawMan(Man);
  73.     pDrawMan->CreateMan();
  74. }

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