设计者模式测试

设计者模式测试。

 

// ModeBiuld.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

class Builder
{
public:
 Builder(){};
 virtual~ Builder() {}
 //纯虚函数,提供构建不同部分的构建接口函数
 virtual void BuilderPartA() = 0;
 virtual void BuilderPartB() = 0;
};

class ConcreateBuilder1: public Builder
{
public :
 ConcreateBuilder1() {}
 virtual ~ ConcreateBuilder1() {}

 virtual void BuilderPartA();
 virtual void BuilderPartB();
} ;

//Builder的派生类,实现BuilderPartA和BuilderPartB接口函数
class ConcreateBuilder2: public Builder
{
public :
ConcreateBuilder2(){}
virtual ~ConcreateBuilder2(){}

virtual void BuilderPartA();
virtual void BuilderPartB();
};

void ConcreateBuilder1::BuilderPartA()
{
 std::cout <<"BuilderPartA by ConcreateBuilder1n"<<std::endl;
}
void ConcreateBuilder1::BuilderPartB()
{
 std::cout<<"BuilderPartB by ConcreateBuilder1n"<<std::endl;
}
void ConcreateBuilder2::BuilderPartA()
{
 std::cout<<"BuilderPartA by ConcreateBuilder2n"<<std::endl;
}
void ConcreateBuilder2::BuilderPartB()
{
 std::cout<<" BuilderPartB by ConcreateBuilder2n"<<std::endl;
}

class Director
{
public :
 Director(Builder * pBuilder);
 ~Director();
 void Construct();
 
private:
 Builder * m_pBuilder;
};

Director::Director(Builder* pBuilder):
m_pBuilder(pBuilder)
{
}

Director:: ~ Director()
{
 delete m_pBuilder;
 m_pBuilder=NULL;
}
//Construct函数表示一个对象的整个构建过程,不同的部分之间的装配方式都是一致的,
//首先构建PartA其次是PartB,只是根据不同的构建者会有不同的表示
void Director::Construct()
{
 m_pBuilder -> BuilderPartA();
 m_pBuilder -> BuilderPartB();
}

int main(int argc, char* argv[])
{
 Builder* pBuilder1 = new ConcreateBuilder1;
 Director* pDirector1 = new Director(pBuilder1);
 pDirector1-> Construct();
 
 Builder * pBuilder2 = new ConcreateBuilder2;
 Director * pDirector2 = new Director(pBuilder2);
 pDirector2-> Construct();
 
 delete pDirector1;
 delete pDirector2;
 system("pause");
 return 0;
}

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

zjz800800

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值