#include "iostream"using namespace std;//抽象类部分------------------因为不想写太多类我直接把抽象类实例化了class CRoad...{public: virtual void RoadFunction() ...{ cout<<"RoadFunction "<<endl; }};class CBuilding...{public: virtual void BuildingFunction() ...{ cout<<"BuildingFunction "<<endl; }};class CTunnel...{public: virtual void TunnelFunction() ...{ cout<<"TunnelFunction "<<endl; } };class CJungle...{public: virtual void JungleFunction() ...{ cout<<"JungleFunction "<<endl; }};class CFactory...{public: virtual CRoad* CreateRode(); virtual CBuilding* CreateBuilding(); virtual CTunnel* CreateTunnel(); virtual CJungle* CreateJungle(); };CRoad* CFactory::CreateRode()...{ return new CRoad();}CBuilding* CFactory::CreateBuilding()...{ return new CBuilding();}CTunnel* CFactory::CreateTunnel()...{ return new CTunnel();}CJungle* CFactory::CreateJungle()...{ return new CJungle();}//具体类部分class CModernRode:public CRoad...{public: void RoadFunction() ...{ cout<<"ModernRoadFunction "<<endl; }};class CModernBuilding:public CBuilding...{public: void BuildingFunction() ...{ cout<<"ModernBuildingFunction "<<endl; }};class CModernTunnel:public CTunnel...{public: void TunnelFunction() ...{ cout<<"ModernTunnelFunction "<<endl; }};class CModernJungle:public CJungle...{public: void JungleFunction() ...{ cout<<"ModernJungleFunction "<<endl; }};class CModernFactory:public CFactory...{public: CRoad* CreateRode(); CBuilding* CreateBuilding(); CTunnel* CreateTunnel(); CJungle* CreateJungle(); };CRoad* CModernFactory::CreateRode()...{ return new CModernRode();}CBuilding* CModernFactory::CreateBuilding()...{ return new CModernBuilding();}CTunnel* CModernFactory::CreateTunnel()...{ return new CModernTunnel();}CJungle* CModernFactory::CreateJungle()...{ return new CModernJungle();}//以下CModernFactory类方法的几个实现类似/**//*************************************///===============================================//下面是客户程序class CGameManager...{private: CFactory* factory; CRoad* Rode; CTunnel* Tunnel; CJungle* Jungle; CBuilding* Building;public: CGameManager(CFactory* factory) ...{ this->factory = factory; } void BuildGame() ...{ this->Rode = factory->CreateRode(); this->Building = factory->CreateBuilding(); this->Tunnel = factory->CreateTunnel(); this->Jungle = factory->CreateJungle(); } void Run() ...{ Rode->RoadFunction(); Tunnel->TunnelFunction(); Jungle->JungleFunction(); Building->BuildingFunction(); }};int main(int argc, char* argv[])...{ CFactory *pfactory = new CModernFactory(); CGameManager game1(pfactory); game1.BuildGame(); game1.Run(); return 0;}