/**/ /***********************************************接口类部分*****************************************************/ // 抽象类声明 class NomalActor ... {public: virtual NomalActor* Clone(); } ; class FlyActor ... {public: virtual FlyActor* Clone();} ; class WaterActor ... {public: virtual WaterActor* Clone();} ; // 具体类声明 class NomalActorA: public NomalActor ... {public: virtual NomalActor* Clone()...{return (NomalActor*)this; } } ; class NomalActorB: public NomalActor ... {public: virtual NomalActor* Clone()...{return (NomalActor*)this; }} ; class FlyActorA: public FlyActor ... {public: virtual FlyActor* Clone()...{return (FlyActor*)this; }} ; class FlyActorB: public FlyActor ... {public: virtual FlyActor* Clone()...{return (FlyActor*)this; } } ; class WaterActorA: public WaterActor ... {public: virtual WaterActor* Clone()...{return (WaterActor*)this; } } ; class WaterActorB: public WaterActor ... {public: virtual WaterActor* Clone()...{return (WaterActor*)this; }} ; /**/ /***********************************************客户类部分*****************************************************/ class GemeSystem ... { GemeSystem(); ~GemeSystem(); void Run(); } ; void GemeSystem::Run(NomalActor normalactor,FlyActor flyactor, WaterActor wateractor) ... { NomalActor normalactor1 = normalactor.Clone(); NomalActor normalactor2 = normalactor.Clone(); NomalActor normalactor3 = normalactor.Clone(); NomalActor normalactor4 = normalactor.Clone(); NomalActor normalactor5 = normalactor.Clone(); FlyActor flyactor1 = flyalactor.Clone(); FlyActor flyactor2 = flyalactor.Clone(); WaterActor wateractor1 = watoralactor.Clone(); WaterActor wateractor2 = watoralactor.Clone();} /**/ /***********************************************主函数部分*****************************************************/ int int main() ... { GemeSystem gameactor1; WaterActorA wateractor; FlyActorB flyactor; NormalactorA normalactor; gameactor1.Run(normalactor,flyactor,wateractor); return 0;}