建造者模式C++实现
来源:互联网 发布:大数据分析专业排名 编辑:程序博客网 时间:2024/05/21 11:26
建造者模式:将一个复杂对象的构建和它的表示分离,使得同样的构造过程可以创建不同的表示;
该模式使得用户只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需知道了;
建造者模式的UML类图为:
该图说明如下:
(1)Builder类:为创建一个Product对象的各个部件指定的抽象接口;
ConcreteBuilder类:具体建造者,实现Builder接口,构建和配置各个部件;
Product:产品角色;
Director:指挥者,构建一个适用Builder接口的对象;
(2)建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临复杂的变化;
(3)该模式的好处:使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以如果要改变一个产品的内部表示,只需再定义一个具体的建造者就可以了;
建造者模式示例C++代码:
产品类、抽象建造者类及其具体子类、指挥者类的接口builder.h:
#pragma once#include <iostream>#include <string>#include <list>using namespace std;//产品类class Product{private: list<string> parts;public:void add(string part){parts.push_back(part);}//添加产品部件void show(){list<string>::iterator itr=parts.begin();//列举所有的产品部件for(;itr!=parts.end();itr++)cout << *itr << ' ';}};//建造者类class Builder{public:Product *product;Builder(){product=new Product();}//声明产品由两个部件组成virtual void BuildPartA(){}virtual void BuildPartB(){}//声明一个得到产品建造后结果的方法virtual Product *GetResult(){return product;}};class ConcreteBuilder1:public Builder{public://建造两个具体的部件void BuildPartA(){product->add("part A");}void BuildPartB(){product->add("part B");}Product *GetResult(){return product;}};class ConcreteBuilder2:public Builder{public:void BuildPartA(){product->add("part X");}void BuildPartB(){product->add("part Y");}Product *GetResult(){return product;}};//指挥者类class Director{public://用来指挥建造过程void construct(Builder *b){b->BuildPartA();b->BuildPartB();}};客户端代码:
#include "builder.h"//客户端不知道具体建造过程int main(){Director d; Builder *b1 = new ConcreteBuilder1();Builder *b2 = new ConcreteBuilder2();d.construct(b1);//指挥者用ConcreteBuilder1的方法来获得建造产品Product *p1 = b1->GetResult();cout << "ConcreteBuilder1:" <<endl;p1->show();d.construct(b2);//指挥者用ConcreteBuilder2的方法来获得建造产品Product *p2 = b2->GetResult();cout << endl << "ConcreteBuilder1:" <<endl;p2->show();delete b1;delete b2;return 0;}代码最终输出为:
建造者模式:当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方法时适用的模式。
0 0
- 建造模式C语言实现
- 【C++】Chapter9:建造者模式
- Objective C--建造者模式
- Objective C 建造者模式
- Objective C--建造者模式
- 建造者模式(C++)
- php实现建造者模式
- 建造者模式c++实现
- C++实现建造者模式
- 建造者模式lua实现
- 建造者模式C++实现
- C++实现建造者模式
- 建造者模式C++实现
- 建造者模式的实现
- 建造者模式 - C++实现
- 建造者模式(java实现)
- 建造者模式加模板模式实现建造小人 C++
- C#--设计模式之建造者模式
- 一个css和js结合的下拉菜单,支持主流浏览器
- linkin大话设计模式--适配器模式
- 复写的Object常用方法
- 解读大型网站系统架构的演化
- iOS 获取手机的型号,系统版本,软件名称,软件版本
- 建造者模式C++实现
- ios 获取按钮所在的cell对象, 注意:ios7 =< System Version < ios8 获取cell对象的区别
- 最新最全的支付宝SDK的使用说明
- android音乐播放器开发 SweetMusicPlayer 实现思路
- 装修真可以说是非常劳心劳力的事情
- C语言—基本语句和运算
- 我是狗币哦,请记住我把
- word2007官方完整版
- ZOJ 2587 Unique Attack 最小割