1_4 BuilderMode 建造者模式
// 定义:将一个复杂对象的构建与其表示分离,使得同样的建造过程
// 可以创建不同的表示
//
// 模式举例:捏泥人,要捏头,捏身体,捏胳膊,捏腿,胖人的捏法
// 和瘦人的捏法过程差不多,出来的人差别很大
//
// 模式特点:必有一个director类和一些Builder类
//
// 模式知识:该模式是一个典型的将行为抽象成对象
//
//#include<iostream>
#include<string>
using namespace std;class Mudman
{
public:void setHeadSize(int size){m_headsize = size;}void setBodySize(int size){m_bodysize = size;}void setArmSize(int size){m_armsize = size;}void setLegSize(int size){m_legsize = size;}void showMan(){cout <<"mud man head size "<<m_headsize<<" mud man body size "<<m_bodysize<<" mud man arm size "<<m_armsize<<" mud man leg size "<<m_legsize;}private:int m_headsize;int m_bodysize;int m_armsize;int m_legsize;
};//Builder这里要有获取到生成泥人的接口
class Builder
{
public:virtual void buildHead()=0;virtual void buildBody()=0;virtual void buildArm()=0;virtual void buildLeg()=0;virtual Mudman * getMudman()=0;
};class FatmanBuilder : public Builder
{
public:FatmanBuilder(Mudman * man):m_man(man){}virtual void buildHead(){m_man->setHeadSize(8);}virtual void buildBody(){m_man->setBodySize(8);}virtual void buildArm(){m_man->setArmSize(8);}virtual void buildLeg(){m_man->setLegSize(8);}virtual Mudman * getMudman(){return m_man;}
private:Mudman * m_man;
};class ThinmanBuilder : public Builder
{
public:ThinmanBuilder(Mudman * man):m_man(man){}virtual void buildHead(){m_man->setHeadSize(5);}virtual void buildBody(){m_man->setBodySize(5);}virtual void buildArm(){m_man->setArmSize(5);}virtual void buildLeg(){m_man->setLegSize(5);}virtual Mudman * getMudman(){return m_man;}
private:Mudman * m_man;
};class Director
{
public:Director(Builder * builder):m_builder(builder){}//建造者只管建造,没有返回值的void buildMudMan(){m_builder->buildHead();m_builder->buildBody();m_builder->buildArm();m_builder->buildLeg();}
private:Builder * m_builder;
};int main()
{Builder * builder = new FatmanBuilder(new Mudman);Director * director = new Director(builder);director->buildMudMan();builder->getMudman()->showMan();return 0;
}
1_4 BuilderMode 建造者模式相关推荐
- GOF23设计模式(创建型模式)建造者模式
使用场景: 我们要建造一个复杂的产品,比如生产一辆汽车.一部手机,这都是由很多零部件组成的,这时候就需要用到我们的建造者模式,将每个零部件分别生产,然后再装配~~ 以下,我将以一个手机的生产过程为实例 ...
- 设计模式 之美 -- 建造者模式
文章目录 1. 解决问题 2. 应用场景 3. 实现 C语言实现 C++实现 4. 缺点 1. 解决问题 描述如下场景: 类的数据成员很多(8个以上),当我们进行初始化的时候放在初始化列表中,影响类的 ...
- 设计模式之建造者模式(生成器模式、Builder)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...
- 动态表单构建器——建造者模式
在编写一个弹出框时,它可以包含确定按钮,取消按钮,标题栏,关闭按钮,最小化按钮,内容,最大化按钮等内容,但这些内容在不同的需求下又不是必须存在的,不同的需求需要对这些组件自由组合,显然每次组合都要重复 ...
- Python设计模式-建造者模式
Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...
- 设计模式-建造者模式(05)
定义 建造者模式(Builder Pattern)也叫做生成器模式.英文原话是:Separate the construction of a complex object from its repre ...
- php设计模式 - 建造者模式
为什么80%的码农都做不了架构师?>>> <?php /*** 建造者模式* * 将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 */ clas ...
- java中自造类是什么意思_Java建造者模式是什么?如何实现?(附代码)
本篇文章给大家带来的内容是关于Java建造者模式是什么?如何实现?(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 建造者模式 一.什么是建筑者模式? 建造者模式(Build ...
- 建造者模式java_java设计模式3——建造者模式
java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...
最新文章
- 计算机网络工程实用技术考试,计算机网络实用技术期中考试复习题.doc
- 使用DjangoUeditor将Ueditor移植到Django(BAE环境下)
- hausdorff距离
- Java学习笔记(四)--数据类型与运算符
- oracle11g 数据库导出报“ EXP-00003: 未找到段 (0,0) 的存储定义”错误的解决方案
- mysql 载入主体时出错_mysql遇到load data导入文件数据出现1290错误的解决方案
- SAP License:SAP学习心得
- 如何使用SQL Server链接服务器查询Excel数据
- PHP-Java-Bridge使用笔记
- python @staticmethod方法
- c# try-catch 抓不到的Bug 解决方案
- 阻抗匹配(一):信号发生器
- flask框架之jinjia2模版语法详解
- 微信小程序里实现自定义日期控件
- java 图书馆系统_JAVA 图书馆管理系统
- 服务器机箱 改造 桌面,你的显卡站起来了吗?——桌面改造分享装机篇
- windows7无法登陆网络上的计算机,win7电脑网络连接显示感叹号无法上网怎么处理...
- 关于动物识别论文的阅读笔记——青鳉鱼的个体识别和“面部反转效应”
- 中国5G毫米波小基站市场行业运行动态与发展趋势预测报告
- 【翻译】GRAIL-手写识别 1