设计模式(六)建造者模式 C++ 实现

建造者模式介绍

定义:

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

我对建造者模式的认识:

其实就是C++的多态知识,面向对象的一个重要指导思想就是,封装隔离变化的,留出不变的。也是我们就可以写一个Build类,这个类的主要作用就是生产每个部件,再抽象一下提升高度,这样就依赖倒转了,这样每次只需要添加一个类,这个类还是这几个部分,只是内部的实现已经不一样了,这样就满足了开放-封闭的原则了。但还是有一个问题,光有Build类还不行,虽然产品的每个部分都有对应的函数,但是用起来的话,还是跟前面说的set函数一样,一用就要使用一大堆函数,也就是这变的东西是封装起来了,但这不变的东西还没留出来。这时,就添加一个Director类,这个类就是专门规定组装产品的步骤的,这样只要告诉Director使用哪个Build,就能生产出不同的产品,对于客户端来说,只看到用了Director的一个Creat函数,很方便。

贴一下代码

class Build
{
public:

    Build() {}

    ~Build() {}

    virtual void BuildBoby() {}

    virtual void BuildEye() {}

    virtual void BuildHire() {}

    virtual void BuildArm() {}

};


class ThinBuild : public Build
{
public: 

    void BuildBoby() { cout << "Build BobyT success" <<endl; }

    void BuildEye() { cout << "Build EyeT success" <<endl; }

    void BuildHire() { cout << "Build HireT success" <<endl; }

    void BuildArm() { cout << "Build ArmT success" <<endl; }
};

class FatBuild : public Build
{
public: 

    void BuildBoby() { cout << "Build BobyF success" <<endl; }

    void BuildEye() { cout << "Build EyeF success" <<endl; }

    void BuildHire() { cout << "Build HireF success" <<endl; }

    void BuildArm() { cout << "Build ArmF success" <<endl; }
};


class Director
{

public:

    Director(Build* a_Build) { m_Build = a_Build; }

    ~Director() {}

    void Creat() 
    {
        m_Build->BuildArm();
        m_Build->BuildBoby();
        m_Build->BuildEye();
        m_Build->BuildHire();
    }

private:

    Build* m_Build;
};


int main()
{
    Build* a_Build = new ThinBuild();
    Director* p1 = new Director(a_Build);
    p1 ->Creat();
    return 0;
}

就是这样,是不是很简单,欢迎交流!!!

猜你喜欢

转载自blog.csdn.net/breakpoints_/article/details/80245102