设计模式C++描述----07.建造者(Builder)模式
来源:互联网 发布:大数据现状 编辑:程序博客网 时间:2024/06/06 01:49
一. 概述
Builder 模式要解决的问题是:当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示(展示)分离开来,这样做的好处就是通过一步步的进行复杂对象的构建,由于在每一步的构造过程中可以引入参数,使得经过相同的步骤创建最后得到的对象的展示不一样。
二. 举例
KFC 与 Mcdonalds 的汉堡生成过程大致都是一样的,假设分为4个步骤;
但是 KFC 与 Mcdonalds 的汉堡味道有所差别,主要是在每一步的细节上有所不同。
顾客要吃汉堡并不关心具体的生产步骤,其实汉堡店也不关心,因为数百年来,这些步骤者是相同的,差别只在细节上。比如盐放多少,辣椒放多少等等。
结构如下:
Builder:为最基本的生产步骤
KFCBuilder:为KFC的具体生产步骤
MCDBuilder:为Mcdonalds的具体生产步骤
Director:为指挥者,用它来控件建造过程
////////////////////////////////////////////////////////////////////////////建造者class Builder{public: virtual ~Builder() { } virtual void BuildSetp1() = 0; virtual void BuildSetp2() = 0; virtual void BuildSetp3() = 0; virtual void BuildSetp4() = 0;};//KFC 具体建造者class KFCBuilder:public Builder{public: void BuildSetp1() { cout<<"KFC Step1:"<<endl; } void BuildSetp2() { cout<<"KFC Step2:"<<endl; } void BuildSetp3() { cout<<"KFC Step3:"<<endl; } void BuildSetp4() { cout<<"KFC Step4:"<<endl; }};//Mcdonalds 具体建造者class MCDBuilder:public Builder{public: void BuildSetp1() { cout<<"Mcdonalds Step1:"<<endl; } void BuildSetp2() { cout<<"Mcdonalds Step2:"<<endl; } void BuildSetp3() { cout<<"Mcdonalds Step3:"<<endl; } void BuildSetp4() { cout<<"Mcdonalds Step4:"<<endl; } };////////////////////////////////////////////////////////////////////////////指挥者class Director{private: Builder *m_pBuilder; public: Director(Builder *builder) { m_pBuilder = builder; } void Create() { m_pBuilder->BuildSetp1(); m_pBuilder->BuildSetp2(); m_pBuilder->BuildSetp3(); m_pBuilder->BuildSetp4(); } };////////////////////////////////////////////////////////////////////////////测试代码int main(int argc,char* argv[]){ KFCBuilder kfc; //想吃KFC Director director(&kfc); director.Create(); return 0;}
三. 说明
1. 建造者模式,在建造顺序上通常是稳定的。
2. 指挥者(Director),来隔离用户与具体建造过程的关联。
3. 它的好处是,客户端不需要知道具体的建造者方法,也不用但心忘记某一步骤没写,这些步骤统一由Director来调用。
- 设计模式C++描述----07.建造者(Builder)模式
- 设计模式C++描述----07.建造者(Builder)模式
- Builder(建造者)设计模式
- 设计模式---建造者模式(Builder)模式
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
- 设计模式(4)-建造者模式(Builder)
- Java设计模式-----Builder建造者模式
- 设计模式--建造者模式(builder)
- 设计模式(6)-建造者模式(Builder)
- 设计模式----建造者模式(Builder Pattern)
- 设计模式--建造者模式(Builder)
- Java设计模式-----Builder建造者模式
- 【设计模式】之 Builder 建造者模式
- [设计模式]Builder建造者模式
- [设计模式]建造者模式(Builder)
- 设计模式---建造者模式(Builder Pattern)
- JAVA设计模式-建造者模式-Builder
- 设计模式--建造者模式(Builder)
- 阻碍个人发展的七大障碍
- ★【AC自动机】【树状数组】【NOI2011】阿狸的打字机
- 关于SVN的那些事儿
- Zabbix agent for Windows的安装、配置与启动
- 如何进行财务数据的安全保护
- 设计模式C++描述----07.建造者(Builder)模式
- html前台页面表示只读和禁用
- Struts2感言
- Android GPRS的自动打开与关闭。
- UNICON是一个架构描述语言 翻译 BY Lychee
- git 学习记录
- ubuntu 全键盘操作电脑
- 不用到处找资料,2天掌握Asp.net Mvc 3
- 私有云