软件设计模式 —— 建造者模式
来源:互联网 发布:python外星人入侵图片 编辑:程序博客网 时间:2024/05/17 22:05
建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(DP)。《大话设计模式》举了一个很好的例子——建造小人,一共需建造6个部分,头部、身体、左右手、左右脚。与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的。建造小人就是在控制下一步步构造出来的
//P; 设计方式: 函数的形参用父类,实际传去具体子类#include <iostream> using namespace std;class Builder { public: virtual void BuildHead() {} virtual void BuildBody() {} virtual void BuildLeftArm(){} virtual void BuildRightArm() {} virtual void BuildLeftLeg() {} virtual void BuildRightLeg() {} }; //构造瘦人 class ThinBuilder : public Builder { public: void BuildHead() { cout<<"build thin body"<<endl; } void BuildBody() { cout<<"build thin head"<<endl; } void BuildLeftArm() { cout<<"build thin leftarm"<<endl; } void BuildRightArm() { cout<<"build thin rightarm"<<endl; } void BuildLeftLeg() { cout<<"build thin leftleg"<<endl; } void BuildRightLeg() { cout<<"build thin rightleg"<<endl; } }; //构造胖人 class FatBuilder : public Builder { public: void BuildHead() { cout<<"build fat body"<<endl; } void BuildBody() { cout<<"build fat head"<<endl; } void BuildLeftArm() { cout<<"build fat leftarm"<<endl; } void BuildRightArm() { cout<<"build fat rightarm"<<endl; } void BuildLeftLeg() { cout<<"build fat leftleg"<<endl; } void BuildRightLeg() { cout<<"build fat rightleg"<<endl; } }; //构造的指挥官 class Director { private: Builder *m_pBuilder; public: Director(Builder *builder) { m_pBuilder = builder; } void Create(){ m_pBuilder->BuildHead(); m_pBuilder->BuildBody(); m_pBuilder->BuildLeftArm(); m_pBuilder->BuildRightArm(); m_pBuilder->BuildLeftLeg(); m_pBuilder->BuildRightLeg(); } }; int main() { FatBuilder fater; Director director(&fater); director.Create(); return 0; }
建造者模式与工厂模式的区别:
工厂模式一般都是创建一个产品,注重的是把这个产品创建出来就行,只要创建出来,不关心这 产品的组成部分。从代码上看,工厂模式就是一个方法,用这个方法就能生产出产品。
建造者模式也是创建一个产品,但是不仅要把这个产品创建出来,还要关系这个产品的组成细节,组成过程。从代码上看,建造者模式在建造产品时,这个产品有很多方法,建造者模式会根据这些相同 方法但是不同执行顺序建造出不同组成细节的产品。
工厂模式注重的对象创建的结果,而创建者模式注重的对象创建的过程。
0 0
- 软件设计模式 —— 建造者模式
- 软件设计模式——建造者模式(Builder)
- 建造型——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 建造者模式——设计模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- openmp
- OS开发----常用函数和常数
- JavaScript中三种弹出式消息提醒的命令是什么?(如:警告,确认,信息输入)
- VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入
- 作为一名基层管理者如何利用情商管理自己和团队(二)
- 软件设计模式 —— 建造者模式
- 枚举子集
- H5的小知识点
- Android竖虚线绘制
- [转] ioctl的命令cmd构造详解
- xml 中画圆角矩形、虚线、实线
- MFC中ListControl控件的使用
- IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
- 数据库设计原则