// 抽象类部分 class House ... { } class Door ... { } class Wall ... { } class Window ... { } class Floor ... { } class HouseCeiling ... { } class Builder ... { virtual Door* BuildDoor(); virtual Wall* BuildWall(); virtual Window* BuildWindow(); virtual Floor* BuildFloor(); virtual HouseCeiling* BuildHouseCeiling(); virtual House* GetHouse();} // 较为稳定的部分 class GameManager ... {public: House* CreateHouse(Builder* builder) ...{ builder->BuilderDoor(); builder->BuilderDoor(); builder->BuilderWall(); builder->BuilderWall(); builder->BuilderWall(); builder->BuilderWall(); builder->BuilderWindow(); builder->BuilderWindow(); builder->BuilderFloor(); builder->BuilderHouseCeiling(); return builder->GetHouse(); }} // 具体类部分 class RomanHouse: public House ... { } class RomanDoor: public Door ... { } class RomanWall: public Wall ... { } class RomanWindow: public Window ... { } class RomanFloor: public Floor ... { } class RomanHouseCeiling: public HouseCeiling ... { } class RomanHouseBuilder : public Builder ... { Door* BuildDoor() ...{} Wall* BuildWall() ...{} Window* BuildWindow() ...{} Floor* BuildFloor() ...{} HouseCeiling* BuildHouseCeiling() ...{} House* GetHouse() ...{}} // main函数部分 int main() ... { GameManager gamemanagetr; RomanHouse* pRomanHouse = new RomanHouse(); gamemanagetr.CreateHouse(pRomanHouse); return 0; }