建造者模式原理:建造模式主要是用于产生对象的各个组成部分,而抽象工厂模式则用于产生一系列对象,建造者模式而且要求这些对象的组成部分有序。
代码如下:
#include <iostream> using namespace std; class Builder { public: virtual void buildHead(){} virtual void buildBody(){} virtual void buildLeftArm(){} virtual void buildRightArm(){} virtual void buildLeftLeg(){} virtual void buildRightLeg(){} }; class BuilderFat:public Builder { public: virtual void buildHead(){cout << "fat head" <<endl;} virtual void buildBody(){cout << "fat Body" << endl;} virtual void buildLeftArm(){cout << "fat Left Arm" <<endl;} virtual void buildRightArm(){cout << "fat Right Arm" <<endl;} virtual void buildLeftLeg(){cout << "fat Left Leg" <<endl;} virtual void buildRightLeg(){cout << "fat Right leg" <<endl;} }; class BuilerThin:public Builder { public: virtual void buildHead(){cout << " thin head" <<endl;} virtual void buildBody(){cout << "thin Body" << endl;} virtual void buildLeftArm(){cout << "thin Left Arm" <<endl;} virtual void buildRightArm(){cout << "thin Right Arm" <<endl;} virtual void buildLeftLeg(){cout << "thin Left Leg" <<endl;} virtual void buildRightLeg(){cout << "thin Right leg" <<endl;} }; class Director { public: Director(Builder *ptmp = NULL):pBuilder(ptmp) { } void createPerson() { pBuilder->buildHead(); pBuilder->buildBody(); pBuilder->buildLeftArm(); pBuilder->buildRightArm(); pBuilder->buildRightArm(); pBuilder->buildLeftLeg(); pBuilder->buildRightLeg(); } private: Builder* pBuilder; }; int main() { BuilderFat fat; Director *pDirector = new Director(&fat); pDirector->createPerson(); delete pDirector; return 0; }