不一样的代理模式(设计模式十三)

前言

什么是代理模式呢?比如说你要去办一件事,你请了一个代理去办,为什么请一个代理去办呢?原因也很简单就是因为这件事复杂,但是你要做的事情就是你的一个手印即可。

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。

主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(
比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

何时使用:想在访问一个类时做一些控制。

如何解决:增加中间层。

正文

最典型的就是webservice,在c# 中我们使用引用服务,这个时候我们可以通过访问和我们webservice 相同的方法名即可访问。

1.要访问对象在远程的服务器上,那么是不可以直接访问的。

2.提供一个相同的方法进行代理,中间访问过程是非常复杂的,因为这涉及到去调用webservice 然后返回。

3.一般来说代理模式的代码是自动生成的

如果要查到代码案例:
https://www.runoob.com/design-pattern/proxy-pattern.html

然后我在网上找了一个例子,比如说订单系统的案例,这个例子

介绍一下优缺点:

优点: 1、降低了类的复杂度,将一对多转化成了一对一。 2、各个类之间的解耦。 3、符合迪米特原则。

缺点:中介者会庞大,变得复杂难以维护。

因为这是一种思想,没有找到好的代码介绍,后续补充。

posted @ 2020-09-04 11:18  敖毛毛  阅读(172)  评论(0编辑  收藏  举报