首页 > 其他分享 >设计模式之Builder模式

设计模式之Builder模式

时间:2023-08-29 10:06:41浏览次数:30  
标签:设计模式 const Builder CBuilder 模式 CProduct void include CConcerterBuilder


Builder模式的关键是其中的Director对象并不直接返回对象,而是通过一步步来一步步进行对象的创建。当然这里Director可以提供一个默认的返回对象的接口(即返回通用的复杂对象的创建,即不指定或者特定唯一指定BuilderProduct*中的参数)。
Product.h
#ifndef _PRODUCT_H_
#define _PRODUCT_H_
class CProduct
{
public :
	CProduct();
	~CProduct();
};
#endif
Produce.cpp
#include "Product.h"
CProduct::CProduct()
{

}

CProduct::~CProduct()
{

}
Builder.h
#ifndef __BUILDER_H_
#define __BUILDER_H_
#include "Product.h"
#include <string>
#include <iostream>
using namespace std;
class CBuilder  //As a Interface
{
public:
	CBuilder();
	~CBuilder();
	virtual void BuilderProductA(const string A)=0;
	virtual void BuilderProductB(const string B)=0;
	virtual void BuilderProductC(const string C)=0;
	virtual CProduct *GetProduct()=0;
};
#endif
Builder.cpp
#include "Builder.h"
CBuilder::CBuilder()
{

}

CBuilder::~CBuilder()
{

}

 


ConcreterBuilder.h
#ifndef __CONCERTERBUILDER_H_
#define __CONCERTERBUILDER_H_
#include "Product.h"
#include "Builder.h"
class CConcerterBuilder:public CBuilder
{
public:
	CConcerterBuilder();
	~CConcerterBuilder();
	void BuilderProductA(const string A);
	void BuilderProductB(const string B);
	void BuilderProductC(const string C);
	CProduct *GetProduct();

};
#endif

 


ConcreterBuilder.cpp
#include "ConcreterBuilder.h"
CConcerterBuilder::CConcerterBuilder()
{

}

CConcerterBuilder::~CConcerterBuilder()
{

}

void CConcerterBuilder::BuilderProductA(const string A)
{
	cout<<A<<endl;

}
void CConcerterBuilder::BuilderProductB(const string B)
{
	cout<<B<<endl;

}
void CConcerterBuilder::BuilderProductC(const string C)
{
	cout<<C<<endl;
}

CProduct * CConcerterBuilder::GetProduct()
{
	return new CProduct;
}
Main.cpp
#include <iostream>
#include "Director.h"
#include "ConcreterBuilder.h"
using namespace std;
int main()
{
 CDirector *pDir=new CDirector(new CConcerterBuilder());
 pDir->Construct();
 delete pDir;
 return 0;
}

标签:设计模式,const,Builder,CBuilder,模式,CProduct,void,include,CConcerterBuilder
From: https://blog.51cto.com/u_13566975/7272461

相关文章

  • 设计模式之Strategy
    Strategy.h#ifndef_STRATEGY_H_#define_STRATEGY_H_classCStrategy{public: CStrategy(); virtual~CStrategy(); virtualvoidAlgrithmInterface()=0;};classCConcreteStrategyA:publicCStrategy{public: CConcreteStrategyA(); ~CConcreteStrategyA();......
  • 设计模式之Prototype模式
    关于这个模式,突然想到了小时候看的《西游记》,齐天大圣孙悟空再发飙的时候可以通过自己头上的3根毛立马复制出来成千上万的孙悟空,对付小妖怪很管用(数量最重要)。Prototype模式也正是提供了自我复制的功能,就是说新对象的创建可以通过已有对象进行创建。在C++中拷贝构造函数(CopyConstr......
  • 设计模式之Factory模式
    在面向对象系统设计中经常可以遇到以下的两类问题:1)为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题n多的子类继承自抽象......
  • 3.2.2 预览模式
    一、预览模式1.普通报表标签预览填报预览数据分析移动端预览2.决策报表PC端预览开发者调试移动端预览......
  • golang官方包管理vendor模式无法引用非go文件
    主页微信公众号:密码应用技术实战博客园首页:https://www.cnblogs.com/informatics/背景&问题golang作为高级计算机语言之一,在云原生以及web网站建设中发挥了重要作用,但在实际应用中我们可能会碰到以下场景,在该场景下:部署机无法访问外网,无法直接从互联网下载依赖包golang依......
  • 报名开启丨邀你一起探索云端 AI 新兴技术和发展模式
    在数字化和信息化的大潮中,大模型和AIGC正悄然引领一场深刻的变革,数字技术与各行各业深度融合,互联网企业遇到了业务高质量增长速度和成本过大的冲突,高质量发展变成企业转型的核心命题。云服务商通过智能托管,AI大模型为企业构建以AI内核驱动能力的产业应用,帮助企业数字化升级和......
  • 剖析网卡绑定模式
    目前网卡绑定mode共有七种(0~6)bond0、bond1、bond2、bond3、bond4、bond5、bond6常用的有三种:mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定......
  • JTS TestBuilder试用
     参考:https://blog.csdn.net/abu935009066/article/details/115304685......
  • RTSP/Onvif协议安防视频平台EasyNVR录像模式自定义操作
    TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif流媒体协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端录像、云存储、录像检索与回看、告......
  • 让你的网站IE8浏览自动用IE7兼容模式
    文件兼容性用于定义让IE如何编译你的网页。此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式。前言为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE8引入了文件兼容性。在IE6中引入一个增设的兼容性模式,文件兼容性使你能够在IE呈......