C# 设计模式-代理模式

一.介绍  

  代理模式(Proxy Pattern)。属于结构型模式。为其它对象提供一种代理以控制对该对象的访问。

二.实现

  代理的概念很简单,就是想调用A类方法时,不直接调用,而是通过调用代理B类的方法,由B类方法去调用A类的方法。

/// <summary>
/// 抽象主题角色
/// </summary>
public interface IPeople
{
    void Say();
}

/// <summary>
/// 真实主题角色
/// </summary>
public class APeople : IPeople
{
    public void Say()
    {
        Console.WriteLine("今天xxx");
    }
}

/// <summary>
/// 代理
/// </summary>
public class Proxy : IPeople
{
    IPeople aPeople;

    public Proxy()
    {
        this.aPeople = new APeople() ;
    }

    public void Say()
    {
        Console.WriteLine("A说了:");
        aPeople.Say();
    }
}

//调用
public static void Main(string[] args)
{
    IPeople proxy = new Proxy();
    proxy.Say();
}

三.总结

  优点:

  1.代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度。

  2.代理对象在客户端和目标对象之间起到了一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发起请求之前进行额外操作,比如权限检查。

  缺点:

  1.由于在客户端和目标对象之间增加了一个代理对象,会造成请求处理的速度变慢。

  2.实现代理类会增加额外的代码量,从而增加系统的复杂程度。

原文地址:https://www.cnblogs.com/shadoll/p/14289637.html