代理模式

 

代理模式(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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值