不一样的代理模式(设计模式十三)
前言
什么是代理模式呢?比如说你要去办一件事,你请了一个代理去办,为什么请一个代理去办呢?原因也很简单就是因为这件事复杂,但是你要做的事情就是你的一个手印即可。
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(
比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
何时使用:想在访问一个类时做一些控制。
如何解决:增加中间层。
正文
最典型的就是webservice,在c# 中我们使用引用服务,这个时候我们可以通过访问和我们webservice 相同的方法名即可访问。
1.要访问对象在远程的服务器上,那么是不可以直接访问的。
2.提供一个相同的方法进行代理,中间访问过程是非常复杂的,因为这涉及到去调用webservice 然后返回。
3.一般来说代理模式的代码是自动生成的
如果要查到代码案例:
https://www.runoob.com/design-pattern/proxy-pattern.html
然后我在网上找了一个例子,比如说订单系统的案例,这个例子
介绍一下优缺点:
优点: 1、降低了类的复杂度,将一对多转化成了一对一。 2、各个类之间的解耦。 3、符合迪米特原则。
缺点:中介者会庞大,变得复杂难以维护。
因为这是一种思想,没有找到好的代码介绍,后续补充。