日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式7----代理模式

發(fā)布時間:2023/11/30 asp.net 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式7----代理模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

代理模式

概念

Proxy 模式又叫做代理模式,是結構型的設計模式之一,它可以為其他對象提供一 種代理(Proxy)以控制對這個對象的訪問。
所謂代理,是指具有與代理元(被代理的對象)具有相同的接口的類,客戶端必須 通過代理與被代理的目標類交互,而代理一般在交互的過程中(交互前后),進行某些 特別的處理。

類圖與各個角色

  • subject(抽象主題角色): 真實主題與代理主題的共同接口。
  • RealSubject(真實主題角色) : 定義了代理角色所代表的真實對象。
  • Proxy(代理主題角色): 含有對真實主題角色的引用,代理角色通常在將客戶端調用傳遞給真是主題對象之前或 者之后執(zhí)行某些操作,而不是單純返回真實的對象。
  • 適合于: 為其他對象提供一種代理以控制對這個對象的訪問。

    示例1

    #include<iostream> #include<string> using namespace std;//提供一種代理來控制對其他對象的訪問 class AbstractCommonInterface{ public://用來啟動系統(tǒng)virtual void run() = 0; };//系統(tǒng)有權限驗證,需要提供用戶名和密碼 //系統(tǒng)類 class MySystem{ public:virtual void run() {cout << "系統(tǒng)啟動" << endl;} };//代理類 class MySystemProxy :public AbstractCommonInterface{ public:MySystemProxy(string username, string password){this->mUsername = username;this->mPassword = password;pSystem = new MySystem;}//判斷用戶名和密碼是否為正確bool checkUsernameAndPassword(){if (mUsername == "admin" && mPassword == "admin"){return true;}return false;}virtual void run(){if (checkUsernameAndPassword()){cout << "啟動成功" << endl;this->pSystem->run();}else{cout << "用戶名或密碼錯誤,無法啟動系統(tǒng)" << endl;}}~MySystemProxy(){if (pSystem != NULL){delete pSystem;}}private:MySystem * pSystem;string mUsername; //用戶名string mPassword; //密碼 };void test01(){MySystemProxy * proxy = new MySystemProxy("admin", "admin");proxy->run(); }int main(void){test01();system("pause");return 0; } ## 案例 實現(xiàn)在淘寶網上的網上書店賣書 #include<iostream> using namespace std;// class Subject { public:virtual void SaleBook() = 0; };class RealSubject :public Subject { public:virtual void SaleBook(){cout << "實體店買書.." << endl;} };代理淘寶 //class ProxyTaoBao :public Subject //{ //public:; // virtual void Book() // { // // // Double11(); // RealSubject rs; // rs.SaleBook(); // Double11(); // } // void Double11(){ // cout << "Double11 打折 半價" << endl; // } //};//代理淘寶 class ProxyTaoBao2 :public Subject { public: ProxyTaoBao2(){this->m_s = new RealSubject;}~ProxyTaoBao2(){delete m_s;}virtual void SaleBook() { Double11(); m_s->SaleBook(); } void Double11() { cout << "Double11 打折 半價" << endl; } private: RealSubject* m_s; };int main(){ProxyTaoBao2 *ptb = new ProxyTaoBao2;ptb->SaleBook();delete ptb;system("pause");return 0; }

    總結

    以上是生活随笔為你收集整理的设计模式7----代理模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。