您的位置:首页 > 编程语言 > C语言/C++

基于c++的builder模式初探。

2014-03-26 13:35 281 查看
builder模式:核心是同样的建造过程可以得到不同的外在表象。

#ifndef IBUILDER_H

#define IBUILDER_H

class IBuilder{

protected:

virtual void buildHead()=0;

virtual void buildBody()=0;

virtual void buildFoot()=0;

friend class Context;

public:

virtual ~IBuilder(){}

};

#endif

#ifndef WOMAN_BUILDER_H

#define WOMAN_BUILDER_H

#include "IBuilder.h"

#include <iostream>

class WomanBuilder : public IBuilder{

protected:

virtual void buildHead();

virtual void buildBody();

virtual void buildFoot();

public:

virtual ~WomanBuilder(){}

};

#endif

#include "WomanBuilder.h"

using namespace std;

void WomanBuilder::buildHead(){

cout<<"build woman head."<<endl;

}

void WomanBuilder::buildBody(){

cout<<"build woman body."<<endl;

}

void WomanBuilder::buildFoot(){

cout<<"build woman foot."<<endl;

}

#ifndef MAN_BUILDER_H

#define MAN_BUILDER_H

#include "IBuilder.h"

#include <iostream>

class ManBuilder : public IBuilder{

protected:

virtual void buildHead();

virtual void buildBody();

virtual void buildFoot();

public:

virtual ~ManBuilder(){}

};

#endif

#include "ManBuilder.h"

using namespace std;

void ManBuilder::buildHead(){

cout<<"build man... head."<<endl;

}

void ManBuilder::buildBody(){

cout<<"build man... body."<<endl;

}

void ManBuilder::buildFoot(){

cout<<"build man... foot."<<endl;

}

#ifndef CONTEXT_H

#define CONTEXT_H

#include "IBuilder.h"

class Context{

public:

static void build(IBuilder*);

};

#endif

#include "Context.h"

void Context::build(IBuilder* builder){

builder->buildHead();

builder->buildBody();

builder->buildFoot();

}

#include "Context.h"

#include "WomanBuilder.h"

#include "ManBuilder.h"

int main(){

IBuilder* bulderwm=new WomanBuilder;

IBuilder* builderman=new ManBuilder;

Context::build(bulderwm);

Context::build(builderman);

delete bulderwm;

delete builderman;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 设计模式