1、構建器提出
在軟件功能開發中,有時面臨“一個復雜對象”的創建工作,該對象的每個功能接口由于需求的變化,會使每個功能接口發生變化,但是該對象使用每個功能實現一個接口的流程是穩定的。構建器就是解決該類現象的。構建就是定義一個抽象類,然后將變化的每個功能接口定義為虛函數,穩定的流程定義為函數接口;其他有變化的類繼承該抽象類。
2、需求描述
有一個產品需要經過設計、制作、包括、出售這幾個步驟,才可以完成整個功能。每個產品都會有這幾個步驟,但每個產品對應的具體細節是不一樣的。
3、構建器模式代碼實現
#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;
}
代碼執行結果如下: