设计模式之建造者模式 c++实现和详细分析
来源:互联网 发布:淘宝店铺关闭重新开 编辑:程序博客网 时间:2024/04/27 19:51
定义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。它又叫做生成器模式
实用范围
1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2 当构造过程必须允许被构造的对象有不同表示时。
UML图:
建造者模式的关键是其中的 Director 对象并不直接返回对象,而是通过一步步(BuildPartA,BuildPartB,BuildPartC)来一步步进行对象的创建。当然这里 Director 可以提供一个默认的返回对象的接口(即返回通用的复杂对象的创建,即不指定或者特定唯一指定 BuildPart 中的参数)。
代码
#include<iostream>using namespace std;/******************************************* 建造者模式演示程序 ** by hnust_xiehonghao ** 2014.7.7 * * 纪念卢沟桥事变 不忘历史 昂首发展 *******************************************/class Man{};class PersonBuild{public:virtual void BuildHead() = 0;virtual void BuildBody() = 0;virtual void BuildRrm_Leg() = 0;virtual Man* GetPerson() = 0; }; class ThinPersonBuild : public PersonBuild{public: ThinPersonBuild() {pThinMan = new Man; }void BuildHead(){ cout<< "thin head" << endl;}void BuildBody(){//为pThinMan分配一个瘦的身体cout<< "thin Body" << endl;}void BuildRrm_Leg(){cout<< "thin Rrm_Leg" << endl;} Man* GetPerson(){return pThinMan;}private:Man *pThinMan;}; class FatPersonBuild : public PersonBuild{public: FatPersonBuild() {pFatMan = new Man; }void BuildHead(){cout<< "Fat head" << endl;}void BuildBody(){cout<< "Fat Body" << endl;}void BuildRrm_Leg(){cout<< "Fat Rrm_Leg" << endl;} Man* GetPerson(){return pFatMan;} private:Man *pFatMan;};class Director{public:Director(PersonBuild *Per){Person = Per;}void CreatePerson(){Person->BuildHead();Person->BuildBody();Person->BuildRrm_Leg();}private: PersonBuild *Person;};int main(){ PersonBuild *buildObj = new ThinPersonBuild(); Director direct(buildObj); direct.CreatePerson(); Man *man = buildObj->GetPerson();return 0;}
参考:
http://www.jellythink.com/archives/98 这个很吊
http://www.weixueyuan.net/view/1273.html
0 0
- 设计模式之建造者模式 c++实现和详细分析
- C#--设计模式之建造者模式
- 设计模式之工厂模式 c++实现和详细分析
- 设计模式之装饰模式 c++实现和详细分析
- 【java设计模式之建造者模式和适配器模式】
- 设计模式之模板模式和建造者模式
- 设计模式之----建造者模式(AlertDialog源码分析)
- C语言实现《设计模式之禅》之建造者模式
- 使用Object-C实现23种设计模式之建造者模式
- C语言和设计模式(建造者模式)
- C语言和设计模式(建造者模式)
- C语言和设计模式(建造者模式)
- 09.C语言和设计模式(建造者模式)
- 18、C语言和设计模式(建造者模式)
- 设计模式之—建造者模式(Builder)-Java实现
- 设计模式之建造者模式,C++实现
- scala实现设计模式之建造者模式
- C++实现设计模式之--建造者模式
- iframe与form结合,进行局部刷新
- 《剑魂之刃》游戏破解
- C++智能指针--shared_ptr
- 每个开发者都应该有一款自己的App
- HDU 1041 Computer Transformation 大数递推
- 设计模式之建造者模式 c++实现和详细分析
- C++智能指针--unique_ptr
- 一道简单的C程序--考考你
- uva 1434 - YAPTCHA(数论)
- acm-最短路 畅通工程续 (hdu 1874)
- HDOJ 1097 A hard puzzle 阶乘末尾数找规律
- 大数据导出报错
- 数据结构(scheme) -- 抽象数据类型(ADT) -- 堆
- C++隐式转换