代码非原创,如有侵权,请联系删除。仅做参考理解使用.

/******************************************************************************** 建造者模式.* 时间:2020/5/7* 作者:xhome******************************************************************************/#include <iostream>using namespace std;class House {public:void setFloor(const string &mFloor) {m_floor = mFloor;}void setWall(const string &mWall) {m_wall = mWall;}void setDoor(const string &mDoor) {m_door = mDoor;}const string &getFloor() const {return m_floor;}const string &getWall() const {return m_wall;}const string &getDoor() const {return m_door;}private:string m_floor;string m_wall;string m_door;};//建造者类
class Builder {public:virtual void makeFloor()=0;virtual void makeWall()=0;virtual void makeDoor()=0;virtual House * getHouse()=0;
};//造公寓的类
class FlatBuilder: public Builder {public:FlatBuilder(){pHouse = new House;}virtual void makeFloor(){pHouse->setFloor("flat floor");}virtual void makeWall(){pHouse->setWall("flat wall");}virtual void makeDoor(){pHouse->setDoor("flat door");}virtual House * getHouse(){return pHouse;}private:House * pHouse;
};//造别墅的类
class VillaBuild: public Builder {public:VillaBuild(){pHouse = new House;}virtual void makeFloor(){pHouse->setFloor("villa floor");}virtual void makeWall(){pHouse->setWall("villa wall");}virtual void makeDoor(){pHouse->setDoor("villa door");}virtual House * getHouse(){return pHouse;}private:House * pHouse;
};//设计师,负责设计过程.
class Director
{public:Director(Builder * build){m_build = build;}void Construct(){m_build->makeWall();m_build->makeFloor();m_build->makeDoor();}private:Builder * m_build;
};int main() {House * house;Builder * builder;Director * director;//别墅工程队builder = new VillaBuild;//1.创建设计师director = new Director(builder);director->Construct();house = builder->getHouse();cout <<" " << house->getWall() << " ,  "<< house->getDoor()<< " , "<< house->getFloor() << endl;delete builder;delete director;delete house;//建造公寓工程队builder = new FlatBuilder;//1.创建设计师director = new Director(builder);director->Construct();house = builder->getHouse();cout <<" " << house->getWall() << " ,  "<< house->getDoor()<< " , "<< house->getFloor() << endl;delete builder;delete director;delete house;//也可以自己造房子,这样适合小作坊,不适合流水线.
//    house = new House;return 0;
}

4.c++模式设计-建造者模式相关推荐

  1. 2015-03-12---外观模式,建造者模式(附代码),观察者模式(附代码),boost库应用

    今天白天主要看了boost库的应用,主要是经常使用的一些库,array,bind,function,regex,thread,unordered,ref,smartpointers库,晚上看了看设计模 ...

  2. 23种设计模式之单例模式、工厂模式、原型模式、建造者模式

    系列文章目录 第一章:程序设计原则-单一职责.接口隔离.依赖倒置.里式替换 第二章:程序设计原则-开闭原则.迪米特法则.合成复用原则 文章目录 系列文章目录 一.设计模式简单介绍 1.1.什么是设计模 ...

  3. 工厂模式与建造者模式

    工厂模式和建造者模式都属于创建型模式,它对类的实例化进行了抽象,能够使软件模块做到与对象的创建和组织无关. 简单工厂模式 专门定义一个类来负责创建其他类的实例,通常根据自变量的不同而返回不同的类的实例 ...

  4. 设计模式之---工厂模式、建造者模式

    ☺ 对于工厂模式,个人学习需要掌握 注意答案的重点标黑了.对于工厂模式.建造者模式,掌握,我下面这几点就很棒棒. 一.工厂模式 1.什么是工厂模式:[关键字factory] 答:创建对象时,不直接ne ...

  5. 设计模式:工厂模式和建造者模式

    工厂模式和建造者模式都是创建型模式,说白了都是为了创建对象为目标用途的设计模式.肯定会拿来比较,一般来说肯定是工厂模式更易懂,使用在平时的项目中更顺手.而建造者模式,更多是创建一个对象,要给这个对象给 ...

  6. 面试官都爱问的java模式之建造者模式!!!

    开心一刻: 同事妻管严,零花钱少的可怜,今天一起打牌他输了400块没钱了.想想也可怜,就请他吃饭,吃饭时他说兄弟借十块钱吧,买张请柬回去好报帐,我当时就呆了,又TM学会一招... 简言: 建造者模式定 ...

  7. java设计模式之原型模式和建造者模式的写法(二)

    背景 原型模式和建造者模式属于创建型模式,在开发中经常会用到,那么这两种设计模式是怎么写的呢,下面进行代码演示. 原型模式 原型模式的核心就是复制 package com.example.protot ...

  8. 创建型模式:建造者模式

    前方高能:<一故事一设计模式>PDF 电子书已经上线,关注公众号即可获取. 个人公众号原文: 创建型模式:建造者模式 五大创建型模式之四:建造者模式. 简介 姓名 :建造者模式 英文名 : ...

  9. 不蹭热度了,传统生成器模式(建造者模式)——Builder Pattern

    不蹭热度了,传统生成器模式(建造者模式)--Builder Pattern 生成器模式 组成 Product IBuild Builder Director 总结 生成器模式 实际中,更新任何类都可以 ...

最新文章

  1. JS简单实现自定义右键菜单
  2. 系统更新链接服务器超时,Win10系统更新后Dr.com连接认证服务器一直超时如何解决?...
  3. python interpolate_python interpolate插值实例
  4. 郭涛:忽悠 众多人工智能创业公司与AI无关
  5. 计算机录入员考试题及答案,计算机录入员理论考题及答案.docx
  6. Shell编程中Shift的用法(转)
  7. datajs.js response handling
  8. python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...
  9. LeetCode 87. 扰乱字符串(记忆化递归 / DP)
  10. NHibernate学习导航
  11. rdd转换成java数据结构_Spark RDD转换成其他数据结构
  12. 利用OpenCV3进行鱼眼镜头标定
  13. 谷粒学院权限管理模块
  14. OS X Eagle Peak:据说这是 Mac 新系统名称
  15. JS实现实时显示时间
  16. RFC2544性能测试64字节实际报告显示为66字节
  17. 地心、南极、太平洋……那些年亚特兰蒂斯“去”过的地方
  18. 十分钟django后台 simpleui -含自定义后台首页
  19. 对接支付宝网站支付接口出现订单信息无法识别,请联系卖家的错误
  20. 财务大数据比赛代码例子

热门文章

  1. 中专计算机网络技术试卷,2018年中职对口升学计算机网络技术模拟试题
  2. Redis Bitmap 位图
  3. Java 算法 约数个数
  4. matplotlib设置线条的样式、颜色
  5. pandas聚合dataframe某一列的值中的所有元素
  6. Python使用字典get()方法TypeError: get() takes no keyword arguments
  7. geth运行报错zsh: exec format error: ./geth
  8. scrapy 整合 djangoitem,摆脱保存数据时SQL报错的困扰
  9. ubuntu mysql 数据_Ubuntu下MySQL数据库使用
  10. android手机 不显示本地视频,各位大神们 android怎么获取手机本地视频啊?