设计模式之代理模式(Proxy Pattern)
生活随笔
收集整理的這篇文章主要介紹了
设计模式之代理模式(Proxy Pattern)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
定義:為其他對(duì)象提供一種代理以控制這個(gè)對(duì)象的訪問,也叫做委托模式。
咱們比作游戲,通俗講代理模式就是,一個(gè)主題虛基類派生出兩個(gè)子類,一個(gè)玩家類,實(shí)現(xiàn)相關(guān)操作,一個(gè)是代練類,代替執(zhí)行玩家相關(guān)操作,代練類對(duì)象有個(gè)指向玩家類對(duì)象的指針,可以通過調(diào)用代練類對(duì)象,實(shí)現(xiàn)玩家不登錄,游戲照樣打怪升級(jí)。。。。
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; };//游戲?qū)嵗?/span> class RealGame : public Game { public:RealGame(string username, string password) {this->userName = username;this->password = password;}~RealGame() {}//上線virtual void begin_time() { printf("開始時(shí)間: 2017/3/20 19:34\n"); }//登錄virtual void login() { cout <<"用戶: " <<userName<<"登錄游戲"<< endl;}//打怪virtual void killBoss() { cout << userName << "打死領(lǐng)主\"錘王菠蘿丁!\"" << endl;}//升級(jí)virtual void upGrade() { cout << userName << "升級(jí)到89級(jí)!" << 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; }
轉(zhuǎn)載于:https://www.cnblogs.com/Forever-Road/p/6591287.html
總結(jié)
以上是生活随笔為你收集整理的设计模式之代理模式(Proxy Pattern)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeForces 114B 【STL
- 下一篇: Spring 自动化装配Bean