小菜学设计模式——代理模式
小菜学设计模式——代理模式
learn_more 发表于3年前
小菜学设计模式——代理模式
  • 发表于 3年前
  • 阅读 118
  • 收藏 10
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 本文是在学习《大话设计模式》所做的笔记,主要是个人理解面向对象、面向接口编程的设计模式:代理模式

背景

    很多时候,因为你的地位特殊而赋予你了不同的权限,那么你拥有别人做不到的事情。这个时候,如果你的朋友很想完成这样一件事情,但是她知道自己可能无法完成,但是你可以帮他处理,同时必要的话还可以中间拿点外快,不过最后要知道你是代理他完成这样一个事情,这就是代理模式出现的原因。

1、使用意图

    通过代理角色代理真实角色去完成某一件特定事情,代理为什么会出现,因为代理身份的特殊性。

2、生活实例

    找房子的时候会找代理,代理能够帮我找到房子,但是他额外收取了我一个月的房租,不说了,房租好贵!

3、Java 例子(框架、JDK 、JEE)

    Spring AOP 面向切面编程就是一个典型的代理模式,通过切入点设置代理,使得Spring自动帮我们完成很多额外的事情,当然,具体如何代理的,肯定使用通过反射完成的!其实个人觉得Spring的核心就是 IOC和AOP,其中IoC使用的核心机制就是反射机制,AOP使用的核心原理就是动态代理设计模式。

    其实Java提供了动态代理的API,具体使用起来也很简单!

4、模式类图

    

5、模式优点

    代理模式:为其他对象提供一种代理以控制对这个对象的访问。

    代理模式的应用:

    1)远程代理:也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。

    2)虚拟代理:是根据需要创建开销很大的对象。通过他来存放实例化需要很长的时间的真实对象。

    3)安全代理:用来控制真实对象的访问权限。

    4)智能指引:当调用真实对象时,代理处理了另外一些事情。

6、与类似模式比较

    代理模式可以说是设计模式当中最有价值的模式之一了,感觉只要有项目使用了他,都是高大上!代理本身就是一个很重要的概念,现在很厉害的正向代理和反向代理,听说反向代理可以很好的降低服务端的压力。

    仔细你会发现,代理模式的类图和装饰模式的类图真的很相似,其实个人觉得代理模式算得上是装饰模式的一个特殊了,为什么这么说,因为代理模式中Proxy聚合了RealSubject,而装饰模式则是Decorator聚合了Component,很明显装饰模式显得更加宽广。二者都可以层层包装,层层代理。

    代理模式和装饰模式如果从二者侧重点上来说的话,其实还是有差别的,代理模式侧重的事情结果,这个完成是RealSubject决定的,而代理只是决定不服环境因素;装饰模式侧重的是事情的过程,每个过程都是平等的,换句话说每个装饰对象都是对等的。


标签: 代理模式 Proxy
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 90
博文 240
码字总数 210196
×
learn_more
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: