c#设计模式之代理模式(Proxy Pattern)
2021-03-30 23:25
标签:line 问题 业务逻辑 tar 业务 void www. onclick 类图 引言 代理这个词语,大家在现实世界已经频繁的接触过,例如火车站代理售票点,因为这些代理售票点的存在,我们不必要去火车站的售票处就可以查询或者取到火车票.代理点本身是没有能力生产车票的,我们在代理处享受到的其实就是火车站售票处的服务,同时我们还能够在代理点享受到火车站售票处没有的服务,例如代理点有个自动售货机,我们还能够享受到购物的服务.这就是代理的优势所在 在设计模式中也有那么一种模式,与代理这个定义紧密相连,下面我将以最简洁的代码展示它 观察上述代码我们发现它有以下特点 1上端调用的不是真实的业务对象,而是它的一个代理,真实的业务逻辑被隔离 2在代理之内,我们还能额外的定义其他的逻辑,而不影响真实的业务逻辑 这就是一个代理模式 当我们不想或不能直接调用一个业务逻辑对象,我们可以在它之上添加一个代理, 用来屏蔽具体的业务逻辑或者增加额外的业务 代理模式 因为代理本身就是一个比较简洁的思想,所以代理模式的类图也比较简单,如下: 代理模式中有三种角色: 主题的抽象角色(ISubject):真实主题和代理主题的抽象 真实的主题角色(RealSubject):真实主题,提供最根本的业务逻辑 主题的代理角色(ProxySubject):真实主题的代理,能够引用真实主题,同时添加一些额外的功能 注意:提供业务逻辑的是真实主题,而不是代理,代理只是起到引用的作用,同时可以增加一些额外的功能 相交装饰器模式 在设计模式里面,有一种设计模式叫做装饰器模式,它能够动态的为对象添加功能, 如果对这两种模式都有所了解的话,会发现他们其实有很多共同之处,同样都是具体对象与辅助对象依赖抽象的方式 例如,我们想为对象添加一个日志的功能:我们既可以选择为它添加一个代理来实现,也可以选择添加一个装饰器来实现,这个时候我们可能会迷惑,添加的到底是代理还是装饰器 对于它们的区别,从他们出发的场景来比较是最好的,从出发场景来看,装饰器模式注重的是对原有对象功能的扩展,而代理模式注重的是对原有对象的控制或屏蔽,个人觉得这是他们最大的区别 适用场景 当我们不想或不能直接调用一个业务逻辑对象,我们可以在它之上添加一个代理, 用来屏蔽具体的业务逻辑或者增加额外的业务 优点: 1降低了系统的耦合度,这是设计模式比较共通的优点; 2能够屏蔽真实的业务逻辑,同时还能额外增加功能 缺点 使用了代理模式,需要增加代理类,必然会增加系统的复杂程度 出自:博客园-半路独行 原文地址:https://www.cnblogs.com/banluduxing/p/9267705.html 本文出自于http://www.cnblogs.com/banluduxing 转载请注明出处。 c#设计模式之代理模式(Proxy Pattern) 标签:line 问题 业务逻辑 tar 业务 void www. onclick 类图 原文地址:https://www.cnblogs.com/banluduxing/p/9267705.html1 ///
1 ///
1 ///
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 var proxy = new ProxySubject();
6 proxy.GetTicket();
7 Console.ReadKey();
8 }
9 }
上一篇:c#批量抓取免费代理并验证有效性
下一篇:C# 动态方法和静态方法的区别
文章标题:c#设计模式之代理模式(Proxy Pattern)
文章链接:http://soscw.com/index.php/essay/70195.html