设计者模式测试

设计者模式测试。

 

// 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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值