设计模式之代理模式(Proxy Pattern)
生活随笔
收集整理的這篇文章主要介紹了
设计模式之代理模式(Proxy Pattern)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
定義:為其他對象提供一種代理以控制這個對象的訪問,也叫做委托模式。
咱們比作游戲,通俗講代理模式就是,一個主題虛基類派生出兩個子類,一個玩家類,實現相關操作,一個是代練類,代替執行玩家相關操作,代練類對象有個指向玩家類對象的指針,可以通過調用代練類對象,實現玩家不登錄,游戲照樣打怪升級。。。。
using namespace std; //游戲主題類 class Game { public:Game() {}virtual ~Game() {}virtual void begin_time() = 0;virtual void login() = 0;virtual void killBoss() = 0;virtual void upGrade() = 0;virtual void end_time() = 0; };//游戲實例 class RealGame : public Game { public:RealGame(string username, string password) {this->userName = username;this->password = password;}~RealGame() {}//上線virtual void begin_time() { printf("開始時間: 2017/3/20 19:34\n"); }//登錄virtual void login() { cout <<"用戶: " <<userName<<"登錄游戲"<< endl;}//打怪virtual void killBoss() { cout << userName << "打死領主\"錘王菠蘿丁!\"" << endl;}//升級virtual void upGrade() { cout << userName << "升級到89級!" << endl;}//下線virtual void end_time() {cout <<"2017/3/20 21:12 玩家"<< userName << "退出游戲" << endl;}private:string userName;string password; };//游戲代練者 class Proxy : public Game { public:Proxy(string userName, string password){pRealGame = new RealGame(userName, password);}~Proxy() {delete pRealGame;pRealGame = nullptr;}virtual void begin_time() {pRealGame->begin_time();}virtual void login(){pRealGame->login();}virtual void killBoss(){pRealGame->killBoss();}virtual void upGrade(){pRealGame->upGrade();}virtual void end_time(){pRealGame->end_time();}private:RealGame *pRealGame; };int main() {Game *m_game = new Proxy("張三","******");m_game->begin_time();m_game->login();m_game->killBoss();m_game->upGrade();m_game->end_time();delete m_game;m_game = nullptr; }
轉載于:https://www.cnblogs.com/Forever-Road/p/6591287.html
總結
以上是生活随笔為你收集整理的设计模式之代理模式(Proxy Pattern)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeForces 114B 【STL
- 下一篇: Spring 自动化装配Bean