构建器提出
在软件功能开发中,有时面临“一个复杂对象”的创建工作,该对象的每个功能接口由于需求的变化,会使每个功能接口发生变化,但是该对象使用每个功能实现一个接口的流程是稳定的。构建器就是解决该类现象的。构建就是定义一个抽象类,然后将变化的每个功能接口定义为虚函数,稳定的流程定义为函数接口;其他有变化的类继承该抽象类。
需求描述
有一个产品需要经过设计、制作、包括、出售这几个步骤,才可以完成整个功能。每个产品都会有这几个步骤,但每个产品对应的具体细节是不一样的。
构建器模式代码实现
#include <iostream>
class Product
{
public:
void ProdctFinshed()
{
this->Design1();
this->Make2();
this->Package3();
this->Sale4();
}
virtual ~Product(){};
protected:
virtual void Design1()=0;
virtual void Make2()=0;
virtual void Package3()=0;
virtual void Sale4()=0;
};
class ProductA:public Product
{
protected:
virtual void Design1(){
std::cout << "ProductA Design1 "<< std::endl;
};
virtual void Make2(){
std::cout << "ProductA Make2 "<< std::endl;
};
virtual void Package3(){
std::cout << "ProductA Package3 "<< std::endl;
};
virtual void Sale4(){
std::cout << "ProductA Sale4 "<< std::endl;
};
~ProductA(){};
};
class ProductB:public Product
{
protected:
virtual void Design1(){
std::cout << "ProductB Design1 "<< std::endl;
};
virtual void Make2(){
std::cout << "ProductB Make2 "<< std::endl;
};
virtual void Package3(){
std::cout << "ProductB Package3 "<< std::endl;
};
virtual void Sale4(){
std::cout << "ProductB Sale4 "<< std::endl;
};
~ProductB(){};
};
int main()
{
Product *pA = new ProductA();
pA->ProdctFinshed();
Product *pB = new ProductB();
pB->ProdctFinshed();
delete pA;
pA = nullptr;
delete pB;
pB = nullptr;
return 0;
}
代码执行结果如下: