C#设计模式(十)代理模式

来源:互联网 发布:汉字发音软件 编辑:程序博客网 时间:2024/06/07 05:31

一、引言

在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代理对象去帮我们去请求目标对象并返回结果给客户端,这样的一个解决思路就是今天要介绍的代理模式。

2.1 定义

代理模式——就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。例如电脑桌面的快捷方式就是一个代理对象,快捷方式是它所引用的程序的一个代理

class Program    {        static void Main(string[] args)        {            MainSystem ms = new ProxySystem();            ms.GetData();            Console.ReadLine();        }               public abstract class MainSystem        {            public abstract void GetData();        }        public class RealSystem : MainSystem        {            public override void GetData()            {                Console.WriteLine("执行数据查询");            }        }        public class ProxySystem : MainSystem        {            RealSystem rs;                        public override void GetData()            {                Console.WriteLine("通过代理查询数据");                if (rs == null)                {                    rs = new RealSystem();                }                rs.GetData();            }        }          }

三、代理模式的优缺点

全面分析完代理模式之后,让我们看看这个模式的优缺点:

优点:

  1. 代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;
  2. 代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。

缺点:

  1.  由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢
  2. 实现代理类也需要额外的工作,从而增加了系统的实现复杂度。

0 0
原创粉丝点击