运城软件开发设计模式中代理模式的概念与应用


[日期:2020-09-03 17:40]   来源:    阅读:

设计模式是程序员在学习软件开发的时候需要重点学习的一个编程开发技术,而今天我们就一起来了解一下,设计模式中代理模式的概念与应用。

运城软件开发设计模式中代理模式的概念与应用

委托(Delegate)

委托跟代理是相对的,通常我们说"A委托B办某事",也相当于在说"B代理A办某事",因此,委托和代理通常可以认为是等价的,这也是为什么很多时候代理模式也可以叫委托模式了,但是,在C#中,委托被赋予了新的含义,它是一种引用方法的类型,相当于C++里的函数指针。

代理(Proxy)

代理的作用就是代替D(被代理者)完成某一件事,A、B、C访问了代理就等同访问了D。看似说了句废话,其实不然,这里关键的一点就是A、B、C本来是可以访问D的,但是由于D的懒惰,或者访问过程比较困难甚至受阻(比如线路被切断),因此才有了代理,有了代理后,A、B、C就不用再访问D了,代理会全权处理来自A、B、C一切请求。

中介(Mediator)

中介是在一组复杂的关系中牵线搭桥,使得A、B、C、D相互之间的交流变得简单,中介不能完全替代A、B、C、D中的任何一方,牵线搭桥之后,被牵线的双方还是要见面的。

委托和中介是等价的,只是主谓方向刚好发生了对调;

代理可以全权代理被代理者,被代理者自始至终可以不用跟访问者交互,而中介只是牵线,终被牵线的双方还是要交互的;

代理通常解决的是多对一的关系,而中介解决的是多对多的关系,见他如见我是代理,牵线搭桥是中介,好好体会一下其中的区别。

代理模式通常采用组合的方式实现,因为被代理者往往不希望被客户端直接访问,当然,也并不是任何时候有明确的被代理对象,例如上面的HTTP请求就不知道具体代理的是谁。但是,可以很明显的看出,这里是代理模式,代理的是对网络API接口的请求。因此,代理模式重在思想,而并非代码结构,如果某种场景代码结构和其他模式类似,或者和上面的UML类图完全不同也不用觉得奇怪。

和适配器比较

代理模式和适配器模式看似是在两个对象之间建立桥梁,使二者可以相互通信,因此他们的代码结构有时候是一样的,但是他们之间有明显的区别:

适配器模式的目的是接口转换,使原本不兼容而不能一起工作的类可以一起工作;

代理模式的目的是间接访问和访问控制;

适配器模式面向的是不能一起工作的两个类,而代理模式是面向原本可以一起工作的两个类。

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。


友情链接: