设计模式7----代理模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式7----代理模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
代理模式
概念
Proxy 模式又叫做代理模式,是結構型的設計模式之一,它可以為其他對象提供一 種代理(Proxy)以控制對這個對象的訪問。
所謂代理,是指具有與代理元(被代理的對象)具有相同的接口的類,客戶端必須 通過代理與被代理的目標類交互,而代理一般在交互的過程中(交互前后),進行某些 特別的處理。
類圖與各個角色
適合于: 為其他對象提供一種代理以控制對這個對象的訪問。
示例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----代理模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SONY KDL
- 下一篇: java经典设计模式4,JAVA设计模式