// 定义:将一个复杂对象的构建与其表示分离,使得同样的建造过程
//     可以创建不同的表示
//
// 模式举例:捏泥人,要捏头,捏身体,捏胳膊,捏腿,胖人的捏法
//        和瘦人的捏法过程差不多,出来的人差别很大
//
// 模式特点:必有一个director类和一些Builder类
//
// 模式知识:该模式是一个典型的将行为抽象成对象
//
//#include<iostream>
#include<string>
using namespace std;class Mudman
{
public:void setHeadSize(int size){m_headsize = size;}void setBodySize(int size){m_bodysize = size;}void setArmSize(int size){m_armsize = size;}void setLegSize(int size){m_legsize = size;}void showMan(){cout <<"mud man head size "<<m_headsize<<" mud man body size "<<m_bodysize<<" mud man arm size "<<m_armsize<<" mud man leg size "<<m_legsize;}private:int   m_headsize;int   m_bodysize;int   m_armsize;int   m_legsize;
};//Builder这里要有获取到生成泥人的接口
class Builder
{
public:virtual void buildHead()=0;virtual void buildBody()=0;virtual void buildArm()=0;virtual void buildLeg()=0;virtual Mudman * getMudman()=0;
};class FatmanBuilder : public Builder
{
public:FatmanBuilder(Mudman * man):m_man(man){}virtual void buildHead(){m_man->setHeadSize(8);}virtual void buildBody(){m_man->setBodySize(8);}virtual void buildArm(){m_man->setArmSize(8);}virtual void buildLeg(){m_man->setLegSize(8);}virtual Mudman * getMudman(){return m_man;}
private:Mudman * m_man;
};class ThinmanBuilder : public Builder
{
public:ThinmanBuilder(Mudman * man):m_man(man){}virtual void buildHead(){m_man->setHeadSize(5);}virtual void buildBody(){m_man->setBodySize(5);}virtual void buildArm(){m_man->setArmSize(5);}virtual void buildLeg(){m_man->setLegSize(5);}virtual Mudman * getMudman(){return m_man;}
private:Mudman * m_man;
};class Director
{
public:Director(Builder * builder):m_builder(builder){}//建造者只管建造,没有返回值的void buildMudMan(){m_builder->buildHead();m_builder->buildBody();m_builder->buildArm();m_builder->buildLeg();}
private:Builder * m_builder;
};int main()
{Builder * builder = new FatmanBuilder(new Mudman);Director * director = new Director(builder);director->buildMudMan();builder->getMudman()->showMan();return 0;
}

1_4 BuilderMode 建造者模式相关推荐

  1. GOF23设计模式(创建型模式)建造者模式

    使用场景: 我们要建造一个复杂的产品,比如生产一辆汽车.一部手机,这都是由很多零部件组成的,这时候就需要用到我们的建造者模式,将每个零部件分别生产,然后再装配~~ 以下,我将以一个手机的生产过程为实例 ...

  2. 设计模式 之美 -- 建造者模式

    文章目录 1. 解决问题 2. 应用场景 3. 实现 C语言实现 C++实现 4. 缺点 1. 解决问题 描述如下场景: 类的数据成员很多(8个以上),当我们进行初始化的时候放在初始化列表中,影响类的 ...

  3. 设计模式之建造者模式(生成器模式、Builder)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

  4. 动态表单构建器——建造者模式

    在编写一个弹出框时,它可以包含确定按钮,取消按钮,标题栏,关闭按钮,最小化按钮,内容,最大化按钮等内容,但这些内容在不同的需求下又不是必须存在的,不同的需求需要对这些组件自由组合,显然每次组合都要重复 ...

  5. Python设计模式-建造者模式

    Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...

  6. 设计模式-建造者模式(05)

    定义 建造者模式(Builder Pattern)也叫做生成器模式.英文原话是:Separate the construction of a complex object from its repre ...

  7. php设计模式 - 建造者模式

    为什么80%的码农都做不了架构师?>>>    <?php /*** 建造者模式* * 将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 */ clas ...

  8. java中自造类是什么意思_Java建造者模式是什么?如何实现?(附代码)

    本篇文章给大家带来的内容是关于Java建造者模式是什么?如何实现?(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 建造者模式 一.什么是建筑者模式? 建造者模式(Build ...

  9. 建造者模式java_java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

最新文章

  1. 计算机网络工程实用技术考试,计算机网络实用技术期中考试复习题.doc
  2. 使用DjangoUeditor将Ueditor移植到Django(BAE环境下)
  3. hausdorff距离
  4. Java学习笔记(四)--数据类型与运算符
  5. oracle11g 数据库导出报“ EXP-00003: 未找到段 (0,0) 的存储定义”错误的解决方案
  6. mysql 载入主体时出错_mysql遇到load data导入文件数据出现1290错误的解决方案
  7. SAP License:SAP学习心得
  8. 如何使用SQL Server链接服务器查询Excel数据
  9. PHP-Java-Bridge使用笔记
  10. python @staticmethod方法
  11. c# try-catch 抓不到的Bug 解决方案
  12. 阻抗匹配(一):信号发生器
  13. flask框架之jinjia2模版语法详解
  14. 微信小程序里实现自定义日期控件
  15. java 图书馆系统_JAVA 图书馆管理系统
  16. 服务器机箱 改造 桌面,你的显卡站起来了吗?——桌面改造分享装机篇
  17. windows7无法登陆网络上的计算机,win7电脑网络连接显示感叹号无法上网怎么处理...
  18. 关于动物识别论文的阅读笔记——青鳉鱼的个体识别和“面部反转效应”
  19. 中国5G毫米波小基站市场行业运行动态与发展趋势预测报告
  20. 【翻译】GRAIL-手写识别 1

热门文章

  1. Maven(1)--坐标与依赖
  2. hamcrest详细介绍
  3. c语言如何获取按键,c语言获得键盘的按键
  4. 201117阶段二SQLite数据库
  5. 【小题目】输入两个数字以及一个符号,输出这两个数字在这个符号下运算产生的结果
  6. Dapper使用技巧
  7. 80端口被system(pid=4)占用的解决方法
  8. 用RecyclerView打造一个轮播图
  9. 联合国隐私监督机构:大规模信息监控并非行之有效
  10. 《数字短片创作(修订版)》——第一部分 剧本创作 第1章 数字短片创意技法 剧本创作的构思...