乐趣区

关于设计模式:戏说代理模式

你看到的是我想让你看到的,你听到的是我想让你听到的!——代理模式的自白

前戏不能少

前戏一:在生活中,咱们经常会见到这么一种景象:有些父母抱着”望子成龙,望女成凤“的心态,将孩子所有的事务(衣食住行,吃喝拉撒)全都包圆了,能够说事无巨细。

前戏二:在现代,男女成婚之前是不能互相见面的,他们之间的很多信息都是通过媒人互相传递的,是丑是美,是高是矮还不是靠媒人的那张嘴。

通过下面这两个前戏,大家有没有一些感觉?

这孩子废了……

万恶的封建社会……

咳咳!!敲黑板了,请留神:咱们明天探讨的是科学知识之 代理模式,不是社会话题!

言归正传

我之所以来段前戏,绝不是为了哗众取宠,我是有 深意 的!

咱们先来看看 代理 * 模式 的定义:

因为某些起因须要给某对象提供一个代理以管制对该对象的拜访。这时,拜访对象不适宜或者不能间接援用指标对象,代理对象作为拜访对象和指标对象之间的中介。

如果咱们把文章结尾两个例子看做代理模式,那么联合定义,咱们能够将上图中的父母和媒人当做”代理对象“。

对于代理模式

长处

  • 代理模式在客户端与指标对象之间起到一个中介作用和爱护指标对象的作用。
  • 代理对象能够扩大指标对象的性能。
  • 代理模式能将客户端与指标对象拆散,在肯定水平上升高了零碎的耦合度,减少了程序的可扩展性。

毛病

  • 代理模式会造成零碎设计中类的数量减少。
  • 在客户端和指标对象之间减少一个代理对象,会造成申请处理速度变慢。
  • 减少了零碎的复杂度。

分类

  • 动态代理 由程序员创立代理类或特定工具主动生成源代码再对其编译,在程序运行前代理类的 .class 文件就曾经存在了。
  • 动静代理 在程序运行时,使用反射机制动态创建而成

组成

  • 形象主题(Subject)类:通过接口或抽象类申明实在主题和代理对象实现的业务办法。
  • 实在主题(Real Subject)类:实现了形象主题中的具体业务,是代理对象所代表的实在对象,是最终要援用的对象。
  • 代理(Proxy)类:提供了与实在主题雷同的接口,其外部含有对实在主题的援用,它能够拜访、管制或扩大实在主题的性能。

结尾

明天咱们次要是对代理模式有个比较简单的认知,后续会开展来说,感激浏览!

学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂!

大家好!我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢送关注,心愿大家多多指教!

常识与技能并重,内力和外功兼修!

退出移动版