设计模式 - 建造者模式(Builder) C++实现
来源:互联网 发布:玄幻网络作家排行榜 编辑:程序博客网 时间:2024/06/05 08:06
建造者模式(Builder)
意图
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
考虑这样一个例子:
一个游戏里面有各种角色,这些角色是一个很复杂的对象,包含多个组成部分(皮肤、衣服等),要创建一个角色的工作会很麻烦:首先要创建好各个组成部分,然后再用这些组成部分来建造角色对象。
从这里我们可以看到:创建角色对象的步骤是一样的,只是构建各个组成部分的工作不一样,且可以扩展。
UML
代码
#include <iostream>#include <string>using namespace std;class Product {private : int id; // 假设为复杂对象 string name; // 假设为复杂对象public : Product() { id = 0; name = ""; } void setId(int id) { this->id = id; } void setName(string name) { this->name = name; } int getId() { return this->id; } string getName() { return this->name; }};class Builder {public : virtual void buildId() = 0; virtual void buildName() = 0; virtual Product * getResult() = 0;};class ConcreteBuilder : public Builder {private : Product * product;public : ConcreteBuilder() { product = new Product(); } void buildId() { product->setId(1); } void buildName() { product->setName("Lucy"); } Product * getResult() { return product; }};class Directer {private : Builder * builder;public : Directer(Builder * builder) { this->builder = builder; } Product * construct() { builder->buildId(); builder->buildName(); return builder->getResult(); }};int main() { Builder * builder = new ConcreteBuilder(); Directer * directer = new Directer(builder); Product * product = directer->construct(); cout << "id : " << product->getId() << ", name : " << product->getName() << endl; delete product; delete directer; delete builder; return 0;}
运行结果
0 0
- 设计模式实现(九)--- 建造者模式(Builder)
- 设计模式 - 建造者模式(Builder) C++实现
- [设计模式]建造者模式(Builder)
- 设计模式--建造者模式(Builder)
- 设计模式Builder(建造者)模式
- 设计模式 - 建造者模式(Builder)
- 设计模式:建造者模式(Builder)
- 设计模式-建造者模式(Builder)
- 设计模式:建造者模式(Builder)
- 设计模式:建造者模式(Builder)
- 设计模式:建造者模式(Builder)
- [设计模式]建造者模式(Builder)
- 设计模式 ---建造者模式(Builder)
- JAVA设计模式:建造者(Builder)
- 设计模式读书笔记:Builder(建造者)
- Builder(建造者)设计模式
- 设计模式---建造者模式(Builder)模式
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
- predis使用之php代码说明
- Python
- JAVA设计模式之享元模式
- 以数组形式获取数据
- C# 编写图片转二色位图
- 设计模式 - 建造者模式(Builder) C++实现
- PE结构详解
- 好看的 自定义AlertDialog
- JAVA设计模式之门面模式(外观模式)
- python技巧
- css搭建界面
- php图像处理常用函数
- Storm源码分析汇总
- static作用(修饰函数、局部变量、全局变量)