建造者模式
来源:互联网 发布:p2p网络管理 编辑:程序博客网 时间:2024/06/05 23:59
1、概念
Bulider模式也叫建造者模式或者生成器模式。Bulider是一种对象创建型模式之一,用来隐藏符合对象的创建过程,它把复合对象的创建过程加以抽象 ,通过子类继承和重载的方式,动态的创建具有复合属性的对象。
2、角色和职责
Bulider:为创建产品各个部分,统一抽象接口。
Connection:具体的创建产品的各个部分,部分A,部分B,部分C
Director:构造一个使用Bulider接口的对象
Product:表示被构造的负责对象
3、适用情况:
一个对象的构建比较复杂,将一个对象的构建和对象的表示进行分离。
4、实现代码:
#include<iostream>#include<string>using namespace std;class House{public:void setWall(string wall){m_wall = wall;}void setFloor(string floor){m_floor = floor;}void setWindow(string window){m_window = window;}string GetWall(){cout << m_wall << endl;return m_wall;}string GetFloor(){cout << m_floor << endl;return m_floor;}string GetWindow(){cout << m_window << endl;return m_window;}private:string m_wall;string m_floor;string m_window;};class Bulider{public:virtual void bulidWall() = 0;virtual void bulidFloor() = 0;virtual void bulidWindow() = 0;virtual House* GetHouse() =0;};// 公寓工程队class FlatBulider:public Bulider{public:FlatBulider(){m_house = new House;}virtual void bulidWall(){m_house->setWall("flat wall");}virtual void bulidFloor(){m_house->setFloor("flat floor");}virtual void bulidWindow(){m_house->setWindow("flat window");}virtual House* GetHouse(){return m_house;}private:House *m_house;};// 别墅工程队class VilaBulider :public Bulider{public:VilaBulider(){m_house = new House;}virtual void bulidWall(){m_house->setWall("vila wall");}virtual void bulidFloor(){m_house->setFloor("vila floor");}virtual void bulidWindow(){m_house->setWindow("vila window");}virtual House* GetHouse(){return m_house;}private:House *m_house;};// 设计师(指挥者) 负责建造逻辑// 建筑队 干具体的话class Director{public:Director(Bulider* bulid){m_bulid = bulid;}void Construct(){m_bulid->bulidWall();m_bulid->bulidFloor();m_bulid->bulidWindow();}private:Bulider* m_bulid;};int main(void){House *house = NULL;Bulider *bulider = NULL;Director *director = NULL;VilaBulider *vilaBulider = NULL;// 请一个建造别墅的工程队bulider= new VilaBulider;// 设计者 指挥 工程队 干活director= new Director(bulider);director->Construct();house = bulider->GetHouse();house->GetWall();house->GetFloor();house->GetWindow();delete house;delete director;delete bulider;// 请一个公寓工程队bulider = new FlatBulider;director = new Director(bulider);director->Construct();house = bulider->GetHouse();house->GetWall();house->GetFloor();house->GetWindow();delete house;delete director;delete bulider;return 0;}
阅读全文
0 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- WordPress 安装在mac上步骤
- 开门大吉。
- java作业
- Serverless 应用开发指南:serverless 的 hello, world
- 同一端口监听TCP与UDP数据包
- 建造者模式
- 使用NGUI里Localization文件注意事项
- 如何只搜索自己博客站的文章
- SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable
- Spring设计模式之JDK的动态代理!
- 手机网络连接类型判断 2/3/4G网络 WiFi和无网络 工具类
- Android universal-Image-Loader原理详解
- LINUX中常用操作命令
- AsyncTask、Thread 写法