设计模式C++生成器模式
来源:互联网 发布:自然之名酵母水 知乎 编辑:程序博客网 时间:2024/06/10 19:46
定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
- 生成器(Builder)模式是一步步构建一个复杂的产品,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节。
- Builder基类创建复杂产品(Product)全过程的抽象基类。Builder基类提供若干个构造部件(BuildPart)的方法(基类提供缺省实现)。具体构建产品的过程由ConcreteBuilder实现,GetResult()是获取构造完成后的对象(该方法并不在基类中!因为产品Product一般没有抽象基类。如果产品有抽象基类,GetResult就可以放在基类里)。
- Director在构造函数中调用Builder的构造部件方法,当最后一个部件方法调用完成后,就产生了一个复杂的产品。Director的作用是封装一个产品的各个部件装配过程。
- Builder基类将公共的部分提取出来,各个部件方法(BuildPart)由子类扩展实现。
- Director中聚合了Builder基类指针,这样可以适应不同的具体构建者。
1、Builder.h
#ifndef _BUILDER_H_#define _BUILDER_H_class BuilderS{public : virtual void makeFun1(int m)=0; virtual void makeFun2(int m)=0; virtual int getResult()=0;};class DirectorS{private : BuilderS* builder;public : DirectorS(BuilderS *b) { this->builder=b; } //建造过程 int construct();};//1#制造者class BuilderOne:public BuilderS{private : int result;public : BuilderOne(int r):result(r){} virtual void makeFun1(int m); virtual void makeFun2(int m); virtual int getResult();};//2#制造者class BuilderTwo:public BuilderS{private : int result;public : BuilderTwo(int r):result(r){} virtual void makeFun1(int m); virtual void makeFun2(int m); virtual int getResult();};#endif
2、Builder.cpp
#include "Builder.h"int DirectorS::construct(){ builder->makeFun1(10); builder->makeFun2(2); builder->makeFun2(3); return builder->getResult();}void BuilderOne::makeFun1(int m){ result+=m;}void BuilderOne::makeFun2(int m){ result*=m;}int BuilderOne::getResult(){ return result;}void BuilderTwo::makeFun1(int m){ result*=m;}void BuilderTwo::makeFun2(int m){ result+=m;}int BuilderTwo::getResult(){ return result;}
3、Client.cpp
#include <iostream> #include <string>#include "Builder.h"using namespace std; int main() { //1# BuilderS * builder=new BuilderOne(10); DirectorS * director=new DirectorS(builder); cout<<director->construct()<<endl; //2# builder=new BuilderTwo(10); director=new DirectorS(builder); cout<<director->construct()<<endl; system("pause"); return 0; }
0 0
- 设计模式 生成器模式
- 设计模式-生成器模式
- 设计模式:生成器模式
- 设计模式----Builder(生成器)
- Java设计|生成器模式
- C++设计模式-生成器
- builder(生成器设计模式)
- 设计模式之生成器
- 设计模式 - 生成器 Builder
- 设计模式->BUILDER(生成器)
- 设计模式---生成器
- 设计模式----Builder(生成器)模式
- 设计模式之-生成器模式
- 设计模式之生成器模式
- 设计模式之生成器模式
- 【重读设计模式】生成器模式
- iOS设计模式-生成器模式
- 设计模式(2): 生成器模式
- javascript小方法之数组去重、数字转成逗号分隔、html元素去标签
- 120. Triangle
- 数据存储--SQLite创建数据库
- [矩阵快速幂] LightOJ 1142 - Summing up Powers (II)
- -bash: rz: command not found
- 设计模式C++生成器模式
- hdu1434(优先队列&&模拟)
- c++primer(第五版) 第十四章 重载运算与类型转换习题答案
- Android之LayoutInflater
- 往手机插入联系人
- 倒排文件索引结构和搜索算法
- 在Action中访问WEB资源
- Android 双击back键退出应用的两种方式
- CentOS6.5 ping: unknown host 解决方法