设计模式-建造者模式
学习笔记:建造者模式
模式简介
:属于创建型模式,使用多个简单的对象一步一步构建一个复杂的对象。提供了一种创建对象的最佳方式。
为什么用
:我想创建的这个复杂的对象是不稳定的,有可能需要这个,也可能不需要这个,选择需要的组合。
怎么样用
:首先保证这多个简单的对象有共同的父类,实现了相同的方法,再写个组装的,把需要的对象放到一起,最后写个builder把不同的组装过程封装起来。
注意事项
:当简单对象具有可以抽象出来的共同点才使用。
实际举例
:掉落或者制作武器的实现
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//游戏装备属性
class EquipmentAttribute {public:virtual void set(string value) {cout << "待添加属性\n";}
};
class EquipmentAttribute_Name : public EquipmentAttribute {public:void set(string value) {cout << "名称: "+value+"\n";}
};
class EquipmentAttribute_HP: public EquipmentAttribute {public:void set(string value) {cout << "HP+"+value+"点\n";}
};
class EquipmentAttribute_MP : public EquipmentAttribute {public:void set(string value) {cout << "MP+" + value + "点\n";}
};
class EquipmentAttribute_ATK : public EquipmentAttribute {public:void set(string value) {cout << "ATK+" + value + "点\n";}
};
class EquipmentAttribute_DEF : public EquipmentAttribute {public:void set(string value) {cout << "DEF+" + value + "点\n";}
};
//游戏装备
class Equipment {private:vector<EquipmentAttribute>v;
public://添加属性void addAttribute(const EquipmentAttribute &ea) {v.push_back(ea);}
};
//游戏装备制作者
class EquipmentBuilder {public://制作图纸1Equipment buildEquipment_1() {Equipment t;EquipmentAttribute_Name name; name.set("痛苦面具"); t.addAttribute(name);EquipmentAttribute_HP hp; hp.set("600"); t.addAttribute(hp);EquipmentAttribute_ATK atk; atk.set("120"); t.addAttribute(atk);return t;}//制作图纸2Equipment buildEquipment_2(){Equipment t;EquipmentAttribute_Name name; name.set("时光之杖"); t.addAttribute(name);EquipmentAttribute_HP hp; hp.set("300"); t.addAttribute(hp);EquipmentAttribute_MP mp; mp.set("300"); t.addAttribute(mp);EquipmentAttribute_ATK atk; atk.set("60"); t.addAttribute(atk);return t;}//制作图纸3Equipment buildEquipment_3() {Equipment t;EquipmentAttribute_Name name; name.set("炽天使之拥"); t.addAttribute(name);EquipmentAttribute_MP mp; mp.set("1000"); t.addAttribute(mp);EquipmentAttribute_ATK atk; atk.set("80"); t.addAttribute(atk);return t;}
};
int main()
{//装备制作者EquipmentBuilder equipmentBuilder;//制作第1种武器Equipment equipment=equipmentBuilder.buildEquipment_1();//其他测试equipment = equipmentBuilder.buildEquipment_2();equipment = equipmentBuilder.buildEquipment_3();return 0;
}
设计模式-建造者模式相关推荐
- Python设计模式-建造者模式
Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...
- 说说设计模式~建造者模式(Builder)
建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC ...
- 设计模式 建造者模式_设计模式:建造者
设计模式 建造者模式 有时需要在应用程序中创建一个复杂的对象. 一种解决方案是Factory模式,另一种是Builder设计模式. 在某些情况下,您甚至可以结合使用这两种模式. 但是在本文中,我想研究 ...
- 设计建造者模式java代码,Java设计模式-建造者模式
定义 Separate the construction of a complex object from its representation so that the sameconstructio ...
- python创造者_python 设计模式-建造者模式
问题:在上一篇python设计模式:抽象工厂模式中,我们尝试用抽象工厂模式规范化了 Pizza 原材料的供应以及 Pizza 的创建.但是我们忽略了一个问题,那就是每种 Pizza 的烘焙时间依赖于生 ...
- java设计模式-建造者模式
概念:使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. ...
- 设计模式-建造者模式(转自:http://www.cnblogs.com/cbf4life/archive/2010/01/14/1647710.html)...
11.1 变化是永恒的 又是一个周三,快要下班了,老大突然拉住我,喜滋滋地告诉我:"牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我们公司制作了,不过这次又额外增 ...
- 大话设计模式—建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 一个 Builder 类会一步一步构造最 ...
- 我的Java设计模式-建造者模式
在未上大学之前,一直有个梦想"I have a dream!",就是能成为一位汽车工程师,一直幻想着开着自己设计的汽车飞奔在公路上,迷倒了万千少女.咳咳~~虽然现在没实现我的dre ...
- Java常用设计模式————建造者模式
引言 建造者模式(Builder Pattern)使用多个简单对象一步一步构建成一个复杂的对象.这种类型的设计模式属于建造型模式,它提供了一种创建对象的最佳方式. 一个Builder会一步步构建最终的 ...
最新文章
- pxe方式安装gentoo
- Java多线程详解[狂神说Java]
- OpenCASCADE:OCCT应用框架OCAF之标准属性
- [MySQL 优化] 移除多余的checksum
- 使用Protobuf推动微服务和REST API的开发
- teamviewer 可用设备上限_河北环保碎石机价格-设备_久诺机械设备
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---31
- 【winfrom】事件与委托
- java课堂点名和提问程序_Java程序设计作业.md
- 如何有效地对时间进行管理
- 字节跳动为什么选用 Flutter : 可能成为不一样的未来 | 开发者说·DTalk
- 云服务基于DevCloud的自动化部署功能,实现快速部署网站应用
- Linux---挂载和卸载移动硬盘、开机自启动机械硬盘
- 坑爹的AWS免费服务
- 解决:Word中无法使用“粘贴”快捷键
- linux同时开启两个端口,linux下squid开多个端口的办法
- python快速整理文件_Python实现自动整理文件
- 学习云计算有用的几个网址
- 爬虫——保存爬取数据
- CubeMX系列教程——6 串口中断