设计模式(7)-建造模式(Build) (二)

2014-11-24 09:57:59 · 作者: · 浏览: 4
"buildclient.h"

BuildClient::BuildClient()
{
}

void BuildClient::setBuilder(Builder *builder)
{
this->builder = builder;
}

void BuildClient::build()
{
builder->BuildA();
builder->BuildB();
builder->BuildC();
}

#include
#include "buildclient.h"

BuildClient::BuildClient()
{
}

void BuildClient::setBuilder(Builder *builder)
{
this->builder = builder;
}

void BuildClient::build()
{
builder->BuildA();
builder->BuildB();
builder->BuildC();
}
main.cpp

[html]
#include
#include "buildclient.h"
#include "xmlbuilder.h"
#include "textbuilder.h"

int main(int argc, char **argv)
{
BuildClient client;
client.setBuilder(new XMLBuilder);
client.build();
return 0;
}

#include
#include "buildclient.h"
#include "xmlbuilder.h"
#include "textbuilder.h"

int main(int argc, char **argv)
{
BuildClient client;
client.setBuilder(new XMLBuilder);
client.build();
return 0;
}

【运行结果】

[html]
construct Builder
construct XMLBuilder
XMLBuilder BuildA
XMLBuilder BuildB
XMLBuilder BuildC

construct Builder
construct XMLBuilder
XMLBuilder BuildA
XMLBuilder BuildB
XMLBuilder BuildC

【对比】建造模式和策略模式

设计模式(3)-策略模式(Strategy)一文中,示例代码UML图,如图2所示:

\

图2

对比策略模式的UML图,不难发现策略模式与建造模式极为相似。他们之间有何区别呢?

区别:策略模式提供的是一个方法,而建造模式提供的是一组方法。

对于建造模式和策略模式的区别,有不同看法,欢迎提出宝贵意见,共同学习!