学习笔记:建造者模式
模式简介

:属于创建型模式,使用多个简单的对象一步一步构建一个复杂的对象。提供了一种创建对象的最佳方式。

为什么用

:我想创建的这个复杂的对象是不稳定的,有可能需要这个,也可能不需要这个,选择需要的组合。

怎么样用

:首先保证这多个简单的对象有共同的父类,实现了相同的方法,再写个组装的,把需要的对象放到一起,最后写个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;
}

设计模式-建造者模式相关推荐

  1. Python设计模式-建造者模式

    Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...

  2. 说说设计模式~建造者模式(Builder)

    建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC ...

  3. 设计模式 建造者模式_设计模式:建造者

    设计模式 建造者模式 有时需要在应用程序中创建一个复杂的对象. 一种解决方案是Factory模式,另一种是Builder设计模式. 在某些情况下,您甚至可以结合使用这两种模式. 但是在本文中,我想研究 ...

  4. 设计建造者模式java代码,Java设计模式-建造者模式

    定义 Separate the construction of a complex object from its representation so that the sameconstructio ...

  5. python创造者_python 设计模式-建造者模式

    问题:在上一篇python设计模式:抽象工厂模式中,我们尝试用抽象工厂模式规范化了 Pizza 原材料的供应以及 Pizza 的创建.但是我们忽略了一个问题,那就是每种 Pizza 的烘焙时间依赖于生 ...

  6. java设计模式-建造者模式

    概念:使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. ...

  7. 设计模式-建造者模式(转自:http://www.cnblogs.com/cbf4life/archive/2010/01/14/1647710.html)...

    11.1 变化是永恒的 又是一个周三,快要下班了,老大突然拉住我,喜滋滋地告诉我:"牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我们公司制作了,不过这次又额外增 ...

  8. 大话设计模式—建造者模式

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 一个 Builder 类会一步一步构造最 ...

  9. 我的Java设计模式-建造者模式

    在未上大学之前,一直有个梦想"I have a dream!",就是能成为一位汽车工程师,一直幻想着开着自己设计的汽车飞奔在公路上,迷倒了万千少女.咳咳~~虽然现在没实现我的dre ...

  10. Java常用设计模式————建造者模式

    引言 建造者模式(Builder Pattern)使用多个简单对象一步一步构建成一个复杂的对象.这种类型的设计模式属于建造型模式,它提供了一种创建对象的最佳方式. 一个Builder会一步步构建最终的 ...

最新文章

  1. pxe方式安装gentoo
  2. Java多线程详解[狂神说Java]
  3. OpenCASCADE:OCCT应用框架OCAF之标准属性
  4. [MySQL 优化] 移除多余的checksum
  5. 使用Protobuf推动微服务和REST API的开发
  6. teamviewer 可用设备上限_河北环保碎石机价格-设备_久诺机械设备
  7. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---31
  8. 【winfrom】事件与委托
  9. java课堂点名和提问程序_Java程序设计作业.md
  10. 如何有效地对时间进行管理
  11. 字节跳动为什么选用 Flutter : 可能成为不一样的未来 | 开发者说·DTalk
  12. 云服务基于DevCloud的自动化部署功能,实现快速部署网站应用
  13. Linux---挂载和卸载移动硬盘、开机自启动机械硬盘
  14. 坑爹的AWS免费服务
  15. 解决:Word中无法使用“粘贴”快捷键
  16. linux同时开启两个端口,linux下squid开多个端口的办法
  17. python快速整理文件_Python实现自动整理文件
  18. 学习云计算有用的几个网址
  19. 爬虫——保存爬取数据
  20. CubeMX系列教程——6 串口中断

热门文章

  1. python控制程序_python流程控制
  2. 2022全网最稳定淘宝商品简版,淘宝主图接口,主图标题
  3. 阿里云ECS安装wordpress教程详细步揍
  4. 浅谈软件测试模型-v模型
  5. 分析Spring事务管理原理及应用
  6. knife4j整合使用
  7. 【chrome】“您的连接不是私密连接”的解决方法
  8. 基于51单片机的数字电子钟
  9. html 对勾单选框,利用原生js和jQuery实现单选框的勾选和取消操作的方法
  10. 分子动力学模拟学习1-采用AmberTools21的MCPB.py构建金属蛋白的top文件