C++设计模式之十二:Proxy(代理)
2012-05-29 20:52
387 查看
一、意图:
提供代理以控制对象的访问;
二、类图:
![](http://my.csdn.net/uploads/201205/29/1338295599_2971.jpg)
三、组成元素:
Subject:公共接口;
Proxy:代理,保存引用用以访问对象;
RealSubject:定义Proxy所代表的实体;
四、实现代码:
#include "iostream"
using namespace std;
class Subject
{
public:
virtual void Request()=0;
};
class RealSubject:public Subject
{
public:
virtual void Request()
{
cout<<"Request By RealSubject"<<endl;
}
};
class Proxy:public Subject
{
private:
RealSubject* m_pRealSubject;
public:
Proxy()
{
m_pRealSubject=NULL;
}
virtual void Request()
{
if (m_pRealSubject==NULL)
{
cout<<"Request By Proxy"<<endl;
m_pRealSubject=new RealSubject();
}
m_pRealSubject->Request();
}
};
void main()
{
Subject* pProxy=new Proxy();
pProxy->Request();
delete pProxy;
system("pause");
}
提供代理以控制对象的访问;
二、类图:
![](http://my.csdn.net/uploads/201205/29/1338295599_2971.jpg)
三、组成元素:
Subject:公共接口;
Proxy:代理,保存引用用以访问对象;
RealSubject:定义Proxy所代表的实体;
四、实现代码:
#include "iostream"
using namespace std;
class Subject
{
public:
virtual void Request()=0;
};
class RealSubject:public Subject
{
public:
virtual void Request()
{
cout<<"Request By RealSubject"<<endl;
}
};
class Proxy:public Subject
{
private:
RealSubject* m_pRealSubject;
public:
Proxy()
{
m_pRealSubject=NULL;
}
virtual void Request()
{
if (m_pRealSubject==NULL)
{
cout<<"Request By Proxy"<<endl;
m_pRealSubject=new RealSubject();
}
m_pRealSubject->Request();
}
};
void main()
{
Subject* pProxy=new Proxy();
pProxy->Request();
delete pProxy;
system("pause");
}
相关文章推荐
- 程序设计模式(十二) C++ 代理(Proxy)模式
- C++设计模式-Proxy代理模式
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式(十二)----- 代理模式(Proxy)----(JAVA版)
- 设计模式C++描述----13.代理(Proxy)模式
- C++设计模式之代理模式(Proxy)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之九(Proxy代理模式)
- c++设计模式之Proxy代理模式.txt
- 设计模式(C++版)之(proxy)代理模式
- C++设计模式之代理模式(Proxy)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- C++设计模式之代理(proxy)模式 -- 伪代理
- 设计模式C++学习笔记之二(Proxy代理模式)
- C++设计模式之二--Proxy代理模式
- 设计模式之十二:Proxy(代理)—对象结构型模式
- 设计模式之十二------Proxy(代理)
- 设计模式C++描述----13.代理(Proxy)模式