Proxy模式C++实现

代理模式 C++实现

代理模式是一种常用的设计模式,他可以使得真实的角色就是实现业务的逻辑,不用关心非其本职责的实务,而是依靠后期代理实现。 这种方式可以实现解耦,让我们类的职责更加明确。 代理模式有很多种,有普通代理,强制代理,还有动态代理。

######普通代理模式与强制代理模式的区别在于真正实现业务的逻辑由谁创建?强制代理模式表示必须由业务者创建,普通代理则认为可以由代理者创建!

######这种普通代理模式主要应用在smart_ptr中。

> #include #include using namespace std; class IGamePlayer { public: virtual void login(string user,string password) =0; virtual void killBoss()=0; virtual void update()=0; }; class GamePlayer:public IGamePlayer { private : string name; public: GamePlayer(IGamePlayer *_gameplayer,string _name) { name = _name; if(_gameplayer==NULL) cout << "_gameplayer failture" << endl; } void killBoss(){ cout << "killBoss" <<endl;} void login(string user,string password){ cout << user << " "<<password <<endl;} void update(){ cout << "update!" <<endl; } }; class GamePlayerProxy:public IGamePlayer { private: IGamePlayer *gameplayer; public: GamePlayerProxy(string name) { gameplayer = new GamePlayer(this,name); if(gameplayer ==NULL) cout << "Create failture!" << endl; } void killBoss() {gameplayer->killBoss();} void login(string user,string password){gameplayer->login(user,password);} void update(){gameplayer->update();} }; int main() { IGamePlayer *proxy = new GamePlayerProxy("user1"); proxy->login("lzz","lzz"); proxy->killBoss(); proxy->update(); delete proxy; return 0; } </code></pre> ###强制代理与普通代理的不同在于业务函数必须由业务类制剂创建!并由业务类返回代理者!