结构型模式之代理模式(八)

常说的设计模式是23种设计模式,分为3大类:

  • 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
  • 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
  • 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。

上次咱们把创建型模式的5种模式都介绍完了,还额外介绍了简单工厂模式。

上次咱们说了“适配器模式”。今天来看一看结构型模式中的“代理模式”。

结构型模式重点在于结构的变化。“代理模式”的“代理”可以帮助我们理解其初衷。

生活中有很多事情需要有“代理”。例如“租房需要中介代理找房”、“结婚需要婚庆公司代理婚庆”等等这样的事情。

结构型模式之代理模式(八)_第1张图片

首先,我们有一个接口,可以说是“要做什么事情”

结构型模式之代理模式(八)_第2张图片

例如“要结婚”

例如“要租房”

其次,具体实现接口的类,可以说是“真实实现要做的事情”。

结构型模式之代理模式(八)_第3张图片

例如“具体实现要结婚的事情”

例如“具体实现要租房的事情”

最后,用代理模式搞定前后事宜。

 结构型模式之代理模式(八)_第4张图片

例如“房屋中介带你看房及后续签订合同”

例如“婚庆公司为你进行典礼及收尾”

测试类中应用:

上面用的是静态代理模式,下面我们来用“动态代理模式”看看效果。

在原有接口和真实类的基础上,构建“动态代理模式”。

结构型模式之代理模式(八)_第5张图片

在这里,我们重点应用Proxy的“动态代理模式”叫做“JDK动态代理”,利用反射机制,达到动态获取对象并执行功能方法,也就是上述的“程序流程”。(Proxy的应用,可参考API说明文档中的说明,加以理解)。

测试方法应用:

又到了讲故事的时间了。我们来设置一个《西游记》里的一个场景。

话说猪悟能(也就是后来的猪八戒),在高老庄想娶高翠兰为妻。本来正常情况,猪悟能与高翠兰结婚。

结构型模式之代理模式(八)_第6张图片

但是高翠兰妈妈不同意,于是派人去请道士降伏猪悟能。又恰巧遇见唐僧和孙悟空师徒,于是请孙悟空去降伏猪妖。

结构型模式之代理模式(八)_第7张图片

结果让猴子做代理,猪悟能就倒霉了,想不到猴子会变成高翠兰蒙骗结婚,还被降伏,拜在唐僧门下,获法号“八戒”。自此猪八戒跟随唐僧去西天拜佛求经。

不得不说,猴子这个“代理”做的称职又到位,不光是降伏,连猪都带走了。

结构型模式之代理模式(八)_第8张图片

从上述场景设定中,我们能分析出,“结婚”是主要目的,真实类是高翠兰实现“结婚”的行为,猪八戒要调用高翠兰的行为,正常情况下,和高翠来结婚。但猴代理出现,更改了结婚行为,突然给老猪安排得“妥妥当当”。

接口

结构型模式之代理模式(八)_第9张图片

结构型模式之代理模式(八)_第10张图片

真实类:

结构型模式之代理模式(八)_第11张图片

结构型模式之代理模式(八)_第12张图片

猪类:

结构型模式之代理模式(八)_第13张图片

正常情况调用,高翠兰与猪悟能结婚了:

结构型模式之代理模式(八)_第14张图片

结构型模式之代理模式(八)_第15张图片

但是猴代理出现了:

静态代理:

结构型模式之代理模式(八)_第16张图片

猪悟能调用了静态代理:

结构型模式之代理模式(八)_第17张图片

结构型模式之代理模式(八)_第18张图片

JDK动态代理:

结构型模式之代理模式(八)_第19张图片

突然结婚对象变成了猴子,请求出老猪的心理阴影面积。

结构型模式之代理模式(八)_第20张图片

结构型模式之代理模式(八)_第21张图片

即使真实类不是高翠兰,只要“大圣”这个金牌代理在,猪八戒就铁定去西天拜佛求经。

结构型模式之代理模式(八)_第22张图片

结构型模式之代理模式(八)_第23张图片


以上就是今日分享,如果你喜欢记得点赞收藏,以防找不到我!

你可能感兴趣的:(九耶教育(钛伦特软件),代理模式,java,开发语言)