结构型模式----代理模式

前言

         昨天对装饰模式做了一个小小的总结,今天想起来还是记忆犹新,果然,通过实例然后总结出来的东西很难忘记啊。那今天就对代理模式来做一个总结。

        代理----顾名思义就是代替别人去做某一件事情。

        我们可以将代理模式具体分为三大角色,分别为 Subject(抽象主题角色)、Proxy(代理主题角色)、RealSubject(真实主题角色)。

        Subject(抽象主题角色):可以是抽象类、具体类、接口,是真实主题角色和代理主题角色的共同接口。

        Proxy(代理主题角色):调用真实主题角色方法,可以扩展真实主题角色的功能。

        RealSubject(真实主题角色):实现抽象主题角色具体方法。

实例

          魔幻手机上牛魔王来到了现代,但是这个时代不允许牛魔王的存在,单靠现代人是消灭不了牛魔王的,但是在西游记中,孙悟空神通广大,只有请孙悟空来收拾牛魔王了,接下来就是现代人召唤孙悟空,让孙悟空代替现代人消灭牛魔王的时刻了。

         首先定义一个抽象类,提供一个方法,然后定义一个“杀手类”,用于接收杀手的名称【此处指的是孙悟空】。

        然后是定义一个下命令的角色,此处也就是【现代人】,来下达一个命令,让代理者去执行。

        最后就是代理杀手【孙悟空】来执行下命令的人的方法,执行结束之后通知命名的执行情况,在这里也就是【牛魔王被孙悟空铲除】。

适用场景 

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

        优点: 1、职责清晰。 2、高扩展性。 3、智能化。

        缺点: 1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

        注意事项: 1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。 2、和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。

发布了114 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43267344/article/details/101156034