代理模式

代理模式包含的角色:
1.定义抽象类,被代理类和真实实现类共同实现,使得任何使用真实对象的地方都可以用代理类Proxy替代。
2.真实实现类:定义代理类所代表的实现类
3.代理类:保存一个引用 使得代理可以访问实体并提供一个与抽象类的接口相同的接口,使得代理 以用来替代实体
抽象类:
/// <summary>
    /// 定义 Proxy与AbstractClass类的公共方法 
    /// </summary>
    public abstract class AbstractClass
    {
        public abstract void SendMessage();
    }

 

具体实现类:
 
 /// <summary>
    /// 实际执处理请类
    /// </summary>
    class RealClass:AbstractClass
    {
        public override void SendMessage()
        {
            Console.WriteLine("小良哥通过代理发送的消息");
        }
    }

 

代理类:
 /// <summary>
    /// 代理类 
    /// </summary>
    class Proxy : AbstractClass
    {
        private RealClass realClass;

        public override void SendMessage()
        {
            if (realClass == null)
                realClass = new RealClass();

            realClass.SendMessage();
        }
    }
客户端调用:
    /// <summary>
    /// 客户端类 将请求发给代理类(Proxy)
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Proxy proxy = new Proxy();
            proxy.SendMessage();

            Console.Read();
        }
    }

 

总结:各种设计模式的最终目的都是为了解耦,提高重用,封装变化,用代码去实现这么多的设计模式无非就是抽象类 接口 继承,此处的代理模式就用到了继承和抽象,以后有时间再写其他设计模式的实现

posted @ 2016-11-18 11:43  Leon_Chaunce  阅读(268)  评论(0编辑  收藏  举报