设计模式学习(建造者模式)
来源:互联网 发布:jquery遍历二维数组 编辑:程序博客网 时间:2024/05/07 18:18
1. 建造者模式
建造者用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
建造者模式适用于:
一个对象的构建比较复杂,将一个对象的构建和对象的表示进行分离。 实际应用中,建造者模式出现的不多(还没见过)。
2. 案例
以一个建造房子的案例为例:
上述类图中,对象的创建是通过Director类来控制一个FlatBuilder或者VillaBuilder来进行创建House的实体对象的。
显然可以看到对象的创建过程使用Builder抽象类的两个子类完成的,然而对象数据是在House类中的,这样就实现了对象的构建和对象的表示分离。
#include <iostream>#include <string>#include <memory>using namespace std;/*房子类*/class House{public: void SetFloor(string floor) { m_floor = floor; } void SetWall(string wall) { m_wall = wall; } void SetWindow(string window) { m_window = window; }private: string m_floor; string m_wall; string m_window;};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() { cout << "FlatBuilder make floor" << endl; } virtual void makeWall() { cout << "FlatBuilder make wall" << endl; } virtual void makeDoor() { cout << "FlatBuilder make door" << endl; } virtual House* GetHouse() { return pHouse; }private: House* pHouse;};//别墅建造队class VillaBuilder : public Builder{public: VillaBuilder() { pHouse = new House; } virtual void makeFloor() { cout << "VillaBuilder make floor" << endl; } virtual void makeWall() { cout << "VillaBuilder make wall" << endl; } virtual void makeDoor() { cout << "VillaBuilder make door" << endl; } virtual House* GetHouse() { return pHouse; }private: House* pHouse;};class Director{public: void Construct(Builder *builder) { builder->makeFloor(); builder->makeDoor(); builder->makeWall(); }};int main(){ House* pHouse = NULL; Director* director = new Director; Builder* builder = new FlatBuilder; director->Construct(builder); pHouse = builder->GetHouse(); delete builder; delete director; delete pHouse; return 0;}
0 0
- 设计模式学习(建造者模式)
- 设计模式学习-----建造者模式(生成器模式)
- 设计模式之建造者模式学习
- 设计模式学习—建造者模式
- 设计模式学习(七):建造者模式
- 设计模式学习--建造者模式
- 设计模式学习笔记-建造者模式
- 设计模式学习笔记--建造者模式
- 设计模式学习--建造者模式
- 设计模式学习笔记--建造者模式
- 设计模式学习--建造者模式
- 设计模式学习:建造者模式
- java 设计模式学习 建造者模式
- 设计模式学习–建造者模式
- 设计模式系列学习三:建造者模式(Builder)
- 设计模式学习笔记---建造者模式(Java版)
- php设计模式学习系列(六)--建造者模式
- 学习设计模式(6)——建造者模式
- 欢迎使用CSDN-markdown编辑器
- Android布局:include、merge 、ViewStub标签区别
- Android Vector曲折的兼容之路
- HP-UX创建裸设备
- 函数封装演练
- 设计模式学习(建造者模式)
- 删除Windows AD域控制器的三种方法
- HashMap哈希散列与扩容
- C/C++中的堆和栈整理
- 光学
- 好的用户界面-界面设计的一些技巧
- ORACLE数据泵导入导出案例(expdp & impdp)
- Qt 开发activex控件(以中控的指纹仪URU4000B为例)
- RecyclerView中的item的match_parent属性失效问题解决方案。