代理模式
来源:互联网 发布:没有充电器 给mac充电 编辑:程序博客网 时间:2024/05/16 06:00
代理模式(Proxy Pattern):
为其他对象提供一种代理以控制对这个对象的访问。客户端调用时直接使用代理来访问。
结构说明(结构图略)
Subject类:定义了RealSubject和Proxy的公用接口,这样就在任何使用RealSubject的地方都可以用Proxy类代理访问。
RealSubject类:定义了Proxy所代表的真实实体
Proxy类:保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来代替实体。
分类:
(1)Virtual Proxy 虚拟代理:Proxy不会生成一个真实的耗费代理,直到非常有必要时(首次请求时)。它用来存放
花费大(实例化需要很长时间)的真实对象。(如:网页图片的首次加载)
(2)Remote Proxy(远程代理):本地的代理对象控制一个远程的对象。(如:WebService的调用)
(3)Protection Proxy(安全代理):代理检查调用真实对象所需要的权限。
(4)Smart Reference(智能引用):当调用真实的对象时,代理处理另外一些事。
实例:模拟快捷方式代理打开应用程序
在桌面上创建一个快捷方式,双击也能打开相应的应用程序,这其实就是一个代理模式。
/// <summary>
/// 公共接口类:Subject类
/// </summary>
public interface IShortCut
{
//定义一个方法用于运行指定路径的应用程序
void RunApplication(string path);
}
/// <summary>
/// 真实实体类:RealSubject类
/// </summary>
public class RealShortCut:IShortCut
{
public void RunApplication(string path)
{
try
{
System.Diagnostics.Process.Start(path);
}
catch (Exception ex)
{
throw;
}
}
}
/// <summary>
/// 代理类:Proxy
/// </summary>
public class ProxyShortCut:IShortCut
{
RealShortCut shortcut;
public void RunApplication(string path)
{
if (shortcut == null)
{
shortcut = new RealShortCut();
}
shortcut.RunApplication(path);
}
}
调用:
ProxyShortCut shortcut = new ProxyShortCut();
shortcut.RunApplication("notepad.exe");
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- 第二周实验报告十进制转换二进制
- C++常见排序方法实现
- vc中操作Xml--使用CMarkup类 - VC使用MSXML解析XML文档
- Catalan数
- 棋牌覆盖问题
- 代理模式
- C++ 多态性的浅析
- 1的个数
- jasonsoft@live.com
- Linux内核调度策略与算法分析 (1)
- js时间加减与时间对象与字符串之间的转换
- 常用HTML标签美化博文
- Linux内核调度策略与算法分析 (2)
- 黑马程序员-自学第2天