[原创]设计模式—-建造者模式

定义

将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

实用范围

1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2 当构造过程必须允许被构造的对象有不同表示时。

角色

在这样的设计模式中,有以下几个角色:1 builder:为创建一个产品对象的各个部件指定抽象接口。2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。3 Director:构造一个使用Builder接口的对象。4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。C++实现:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;
//抽象建造者
class Builder
{
public:
    virtual void BuildHead() = 0;
    virtual void BuildBody() = 0;
    virtual void BuildFoot() = 0;
};
//具体的建造者类
class ManBuilder : public Builder
{
public:
    void BuildHead() { cout << "build man head" << endl; };
    void BuildBody() { cout << "build man body" << endl; };
    void BuildFoot() { cout << "build man foot" << endl; };
};

class WomanBuilder : public Builder
{
public:
    void BuildHead() { cout << "build woman head" << endl; };
    void BuildBody() { cout << "build woman body" << endl; };
    void BuildFoot() { cout << "build woman foot" << endl; };
};

//构造的指挥官
class Director
{
public:
    void Create(Builder *pBuilder)
    {
        pBuilder->BuildHead();
        pBuilder->BuildBody();
        pBuilder->BuildFoot();
    }
};

客户端调用代码:

#include "stdafx.h"
#include "Builder.h"

int _tmain(int argc, _TCHAR* argv[])
{
    Builder *builder1 = new ManBuilder();
    Builder *builder2 = new WomanBuilder();
    Director *director = new Director();
    director->Create(builder1);
    director->Create(builder2);

    delete director;
    delete builder1, builder2;

    getchar();
    return 0;
}

这里指挥官可以build不同的对象了。

转载请注明出处:http://qq78292959.cnblogs.com/
原文链接: https://www.cnblogs.com/qq78292959/archive/2013/02/19/2917005.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/78432

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午6:30
下一篇 2023年2月9日 下午6:30

相关推荐