学无止境,精益求精

十年河东,十年河西,莫欺少年穷

学历代表你的过去,能力代表你的现在,学习代表你的将来

所谓代理模式就是你去委托一个人帮你干一件事!例如:你委托我帮你谈恋爱,你委托我帮你陪你媳妇儿逛街,你委托我帮你陪你女朋友回家过年!等等吧!这些事情有需求,请找我,电话:XXX,微信:XXX,QQ:XXX...

首先看看代理模式的 UML 类图:

大话设计模式:代理模式 C#

上图中:RealSubject 代表的是你,Proxy 代表的是我,Subject 是你委托我做的一些事情。就拿你委托我陪你媳妇儿逛街来说,你告诉我要帮你媳妇儿买裙子,买鞋子,买零食等等,这些事情可以看成上图的抽象类 Sbuject 中的抽象方法。而我作为你的代理,我可以把你给我交代给我的事情不完全做,也就是说我可以不给你媳妇儿买零食。当然,我也可以偷偷背着你给你媳妇买玫瑰花。总之,作为代理的我可以全做,也可以部分做,亦可以偷偷趁机多做一点,给你媳妇儿献殷勤,说不定将来的某一天你媳妇儿就归我了!哈哈哈 ~_~

呵呵,调皮了点,言归正传!

那么咱们来看看C#实现代码模式的基础代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    /// <summary>
    /// 抽象接口类
    /// </summary>
    abstract class Subject
    {
        public abstract void Request();
    }
    /// <summary>
    /// 真是实体类
    /// </summary>
    class RealSubject: Subject
    {
        public override void  Request()
        {
             Console.WriteLine("真实的请求");
        }
    }
    /// <summary>
    /// 代理类
    /// </summary>
    class Proxy: Subject
    {
        RealSubject realSubject;
        public override void  Request()
        {
             if (realSubject==null)
            {
                realSubject= new RealSubject();
            }
            realSubject.Request();
        }
    }
    /// <summary>
    /// 客户端代码
    /// </summary>
    class Program
    {
        public static void Main(string[] args)
        {
            Proxy proxy= new Proxy();
            proxy.Request();

            Console.Read();
        }
    }
}
View Code

相关文章: