概述
示例
builder.cpp
1 class House{ 2 //.... 3 }; 4 5 class HouseBuilder { 6 public: 7 House* GetResult(){ 8 return pHouse; 9 } 10 virtual ~HouseBuilder(){} 11 protected: 12 13 House* pHouse; 14 virtual void BuildPart1()=0; 15 virtual void BuildPart2()=0; 16 virtual void BuildPart3()=0; 17 virtual void BuildPart4()=0; 18 virtual void BuildPart5()=0; 19 20 }; 21 22 class StoneHouse: public House{ 23 24 }; 25 26 class StoneHouseBuilder: public HouseBuilder{ 27 protected: 28 29 virtual void BuildPart1(){ 30 //pHouse->Part1 = ...; 31 } 32 virtual void BuildPart2(){ 33 34 } 35 virtual void BuildPart3(){ 36 37 } 38 virtual void BuildPart4(){ 39 40 } 41 virtual void BuildPart5(){ 42 43 } 44 45 }; 46 47 48 class HouseDirector{ 49 50 public: 51 HouseBuilder* pHouseBuilder; 52 53 HouseDirector(HouseBuilder* pHouseBuilder){ 54 this->pHouseBuilder=pHouseBuilder; 55 } 56 57 House* Construct(){ 58 59 pHouseBuilder->BuildPart1(); 60 61 for (int i = 0; i < 4; i++){ 62 pHouseBuilder->BuildPart2(); 63 } 64 65 bool flag=pHouseBuilder->BuildPart3(); 66 67 if(flag){ 68 pHouseBuilder->BuildPart4(); 69 } 70 71 pHouseBuilder->BuildPart5(); 72 73 return pHouseBuilder->GetResult(); 74 } 75 };
原文:https://www.cnblogs.com/cxc1357/p/12310264.html