建造者模式(builder)
来源:互联网 发布:阿里金融云解决方案 编辑:程序博客网 时间:2024/05/15 14:11
1.目的
当一个对象的结构比较复杂的时候(如组合),需要多个部分分别生成时,可以考虑使用建造者模式,builder提供构造各个成员部分的函数,然后由director来调builder的接口来完成对象的拼接(也可以由客户来实现对象的拼接,但是如果由director来调就可以对客户屏蔽builder的多个接口,屏蔽对象的生成过程)。对客户屏蔽对象的生成过程,可以说是建造者模式的主要目的
2.代码
builder.h
#ifndef BUILDER_H_#define BUILDER_H_#include <iostream>using namespace std;class PersonBuilder{public:virtual ~PersonBuilder(){}virtual void buildHead()=0;virtual void buildBody()=0;virtual void buildArm()=0;virtual void buildLeg()=0;void show(){cout<<"head = "<<head<<" body = "<<body<<" leg = "<<leg<<" arm = "<<arm<<endl;}protected:int head;int body;int arm;int leg;};class FatBuilder:public PersonBuilder{public:void buildHead(){head = 10;}void buildBody(){body = 20;}void buildArm(){arm = 3;}void buildLeg(){leg = 8;}};class ThinBuilder:public PersonBuilder{public:void buildHead(){head = 5;}void buildBody(){body = 15;}void buildArm(){arm = 2;}void buildLeg(){leg = 5;}};class Director{public:void setBuilder(PersonBuilder& builder){this->builder = &builder;}void builderPerson(){builder->buildHead();builder->buildBody();builder->buildArm();builder->buildLeg();};private:PersonBuilder* builder;};#endif /* BUILDER_H_ */
builder.cpp
#include "Builder.h"void builder(){FatBuilder fat;ThinBuilder thin;Director director;director.setBuilder(fat);director.builderPerson();fat.show();director.setBuilder(thin);director.builderPerson();thin.show();}
运行结果:
head = 10 body = 20 leg = 8 arm = 3
head = 5 body = 15 leg = 5 arm = 2
0 0
- 建造者(Builder)模式
- 建造者(Builder)模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者(Builder)模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者(Builder)模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式(Builder)
- Builder(建造者)模式
- 建造者(Builder)模式
- 建造者模式(builder)
- 建造者模式(Builder)
- 建造者模式(Builder)
- Builder(建造者)模式
- 建造者模式(Builder)
- 添加视图后在屏幕上看不到或点击无响应的原因浅析
- 30调用服务
- poj3070矩阵 快速幂
- 网站细节设计决定SEO成败
- 数据结构之线性表顺序实现
- 建造者模式(builder)
- 如何创建守护进程
- NYOJ-最大值和最小值
- Android 4.2 上Wi-Fi Display(Miracast)的开启和使用 无线显示
- Android系统Camera录像过程分析
- STL源码剖析——容器配接器之queue
- 归并排序
- 29短信拦截
- 【进化版】三角形外心坐标和外接圆半径