创建者设计模式属于 创建型设计模式的一种。
创建者设计模式主要用于复杂对象的创建,这些对象的创建步骤和组合方式基本固定,但是可能具体的对象的组成部分却又可以自由的变化。创建者设计模式通过封装来隔离组成复杂对象的各个组成部分的变化。从而可以应对各种各样的需求。
创建者模式的类图如下:
举例来说:
KFC的套餐 为 Product 角色 顾客为Client 收银员为 Director 角色 套餐内的食品制作员工为 Builder角色
Director 包含 Construct 方法用于构建最终产品。而这个产品就是我们要构建的复杂的对象。
用c++ 来实现的代码如下:
#include "stdafx.h"
#include <stdio.h>
class Product
{
};
class Builder
{
public:
virtual void BuildPartA()=0;
virtual void BuildPartB()=0;
protected:
private:
};
class ConcreteBuilder:public Builder
{
public:
void BuildPartA(){printf("builder part a:\n");};
void BuildPartB(){printf("builder part b:\n");};
private:
Product m_product;
};
class Director
{
public:
Director(Builder* builder){m_bBuilder=builder;};
void Construct(){m_bBuilder->BuildPartA();m_bBuilder->BuildPartB();};
protected:
private:
Builder* m_bBuilder;
};
int main(int argc, char* argv[])
{
Director director(new ConcreteBuilder);
director.Construct();
getchar();
return 0;
}