建造者模式介绍
定义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
我对建造者模式的认识:
其实就是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;
}
就是这样,是不是很简单,欢迎交流!!!