[Design Pattern] 代理模式(Proxy)

[Design Pattern] 代理模式(Proxy)


代理模式如同字面上的意思,当我们想要做某件事的时候(ex:买衣服),不直接存取原始对象(直接找工厂),而是透过代理的管道(代理商)来处理。最常用到的大概有:

  1. 远端代理(Remote):代理远端程时执行,例如我们可以透过WebService的WSDL定义产生中介档的函数库,透过这个函数库就可以存取WebService。
  2. 虚拟代理(Virtual):将需要秏费大量时间或是复杂的实例,利用代理模式的对象代替。
  3. 安全代理(Protect or Access):控制对象存取时的许可权。
  4. 智慧参考(Smart Reference):提供比原有对象更多的服务。

其它还有很多啦,像是缓存也算是一种Proxy的应用,以UML架构表示如下:

image

简单程序范例:


{
    static void Main(string[] args)
    {
        IService proxy = new ProxyService();
        proxy.DoWork();
    }
}

interface IService
{
    void DoWork();
}

class ProxyService : IService
{
    private RemoteService _rs;
    public ProxyService()
    {
        _rs = new RemoteService();
    }
    public void DoWork()
    {
        _rs.DoWork();
    }
}

class RemoteService : IService
{
    public void DoWork()
    {
        Console.WriteLine("Hello Word");
    }
}

Technorati 的标签:Design Pattern