代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
代理模式:⒈遠程代理 也就是為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在於不同地址空間的事實(例如WEBSERVICES)
⒉虛擬代理 是根據需要建立開銷很大的對象。通過它來存放執行個體化需要很長時間的真實對象(例如網頁中的圖片,通過虛擬代理來替代真實的圖片,此時代理儲存真實圖片的路徑和尺寸)
⒊安全代理 用來控制真實對象訪問時的許可權
⒋智能指引 指當調用真實對象時,代理處理另外一些事
類實現
- //Proxy.h
- #ifndef AFX_CLASS_SUBJECT
- #define AFX_CLASS_SUBJECT
- class Subject
- {
- public:
- virtual void Request()=0;
- };
- #endif
-
- #ifndef AFX_CLASS_REALSUBJECT
- #define AFX_CLASS_REALSUBJECT
- class RealSubject:public Subject
- {
- public:
- virtual void Request()
- {
- cout<< "真實的請求" << endl;
- }
- };
- #endif
-
- #ifndef AFX_CLASS_PROXY
- #define AFX_CLASS_PROXY
- class Proxy:public Subject
- {
- public:
- Proxy()
- {
- realSubject = NULL;
- }
- virtual void Request()
- {
- if( realSubject == NULL )
- {
- realSubject = new RealSubject();
- }
- realSubject->Request();
- }
- private:
- RealSubject *realSubject;
- };
- #endif
主函數實現:
- #include <iostream>
- #include <string>
- #include <conio.h>
- using namespace std;
- #include "proxy.h"
-
- int main( int argc , char *argv[] )
- {
- Proxy *proxy = new Proxy();
- proxy->Request();
-
- getch();
- return 1;
- }