您现在的位置是:主页>文章>C# 设计模式(8)--代理模式 网站首页

C# 设计模式(8)--代理模式

一,引言

这个系列是本人对设计模式的一些看法,希望能让对设计模式有兴趣的朋友,以此入门,写的不当之处欢迎指出。转载的朋友请留下原文链接。下面为大家介绍一种设计模式——代理模式.

二,定义

代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。

三,实例

有一天想送朵花给一个人,但又不好意思直接送,突然想起她的好朋友,也就是我表妹,于是就想让表妹代我送给她。

分析:我和表妹其实都有送花这种能力,但我们各自的职责是不同,花,其实是由表妹代送的。

namespace ProxyDemo
{
    /// 
    /// 抽象类
    /// 
    abstract class Giver
    {
        public abstract void Send();
    }
}
namespace ProxyDemo
{
    /// 
    /// 真实实体类(“我”)
    /// 
     class Pursuit:Giver
    {
        public override void Send() {
            Console.WriteLine("想送你的花");
        }
    }
}
namespace ProxyDemo
{
    /// 
    /// 代理类(“表妹”)
    /// 
    class Proxy:Giver
    {
        Pursuit pursuit;
        public override void Send()
        {
            if (pursuit == null)
            {
                pursuit = new Pursuit();
            }
            pursuit.Send();
        }
    }
}
namespace ProxyDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Proxy proxy = new Proxy();
            proxy.Send();
        }
    }
}

实例就这么简单,就不多加描述。

四,用在什么场合

以下部分来自《大话设计模式》

1:远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。(如:WebService)

2:虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。

3:安全代理,用来控制真实对象访问时的权限。一般用于对象应该有不同的访问权限的时候。

4:智能指示,是指当调用真实的对象时,代理处理另外一些事。

解析:代理模式其实就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。


暂时就这样,喜欢请转载...

本例实例下载:代理模式源码

Top