常说的设计模式是23种设计模式,分为3大类:
- 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
- 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
- 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。
上次咱们把创建型模式的5种模式都介绍完了,还额外介绍了简单工厂模式。
上次咱们说了“适配器模式”。今天来看一看结构型模式中的“代理模式”。
结构型模式重点在于结构的变化。“代理模式”的“代理”可以帮助我们理解其初衷。
生活中有很多事情需要有“代理”。例如“租房需要中介代理找房”、“结婚需要婚庆公司代理婚庆”等等这样的事情。
首先,我们有一个接口,可以说是“要做什么事情”
例如“要结婚”
例如“要租房”
其次,具体实现接口的类,可以说是“真实实现要做的事情”。
例如“具体实现要结婚的事情”
例如“具体实现要租房的事情”
最后,用代理模式搞定前后事宜。
例如“房屋中介带你看房及后续签订合同”
例如“婚庆公司为你进行典礼及收尾”
测试类中应用:
上面用的是静态代理模式,下面我们来用“动态代理模式”看看效果。
在原有接口和真实类的基础上,构建“动态代理模式”。
在这里,我们重点应用Proxy的“动态代理模式”叫做“JDK动态代理”,利用反射机制,达到动态获取对象并执行功能方法,也就是上述的“程序流程”。(Proxy的应用,可参考API说明文档中的说明,加以理解)。
测试方法应用:
又到了讲故事的时间了。我们来设置一个《西游记》里的一个场景。
话说猪悟能(也就是后来的猪八戒),在高老庄想娶高翠兰为妻。本来正常情况,猪悟能与高翠兰结婚。
但是高翠兰妈妈不同意,于是派人去请道士降伏猪悟能。又恰巧遇见唐僧和孙悟空师徒,于是请孙悟空去降伏猪妖。
结果让猴子做代理,猪悟能就倒霉了,想不到猴子会变成高翠兰蒙骗结婚,还被降伏,拜在唐僧门下,获法号“八戒”。自此猪八戒跟随唐僧去西天拜佛求经。
不得不说,猴子这个“代理”做的称职又到位,不光是降伏,连猪都带走了。
从上述场景设定中,我们能分析出,“结婚”是主要目的,真实类是高翠兰实现“结婚”的行为,猪八戒要调用高翠兰的行为,正常情况下,和高翠来结婚。但猴代理出现,更改了结婚行为,突然给老猪安排得“妥妥当当”。
接口
真实类:
猪类:
正常情况调用,高翠兰与猪悟能结婚了:
但是猴代理出现了:
静态代理:
猪悟能调用了静态代理:
JDK动态代理:
突然结婚对象变成了猴子,请求出老猪的心理阴影面积。
即使真实类不是高翠兰,只要“大圣”这个金牌代理在,猪八戒就铁定去西天拜佛求经。
以上就是今日分享,如果你喜欢记得点赞收藏,以防找不到我!