一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情。
5.4 适配器模式
什么是适配器模式?
为了满足两个业务本来不相关,但是现在想要将其关联起来的。比如本来有一个User服务,还有一个Account服务。现在想要用户的账户信息。就需要有一个适配器将这两个类关联起来。
重点在于Adapter
Spring如何使用适配器模式?
HTTP请求SpringMVC的时候,通过HandlerAdatper发放到不同的Handler。然后不同的Handler执行结束之后再将结果转换成ModelAndView让HanderAdataper进行处理返回
也就是我本身HTTP只要JSON格式的返回。但是Controller层给的是一个String。这个时候适配器就根据配置将String转换成JSON的数据。还有就是REQ给的是一个一个的key-value。适配器将其组装成一个完整的对象给到Controller进行处理逻辑。
5.5 装饰器模式
什么是装饰器模式?
就是给类本身增加一些功能,增强类。而且是动态的按照需要增强类的各个属性方法等
- 动态增加功能,动态撤销
- 类功能类似于子类的扩展
Decorator
举个例子
- 杯子这个接口,有一个方法,takeInWater();装水
- 有大杯子和小杯子,大杯子可以装1000ml,小杯子可以装500ml
- 有一个带有装饰物的杯子的抽象类,其中有一个属性是杯子,还有一个方法是挂件pendant()
- 带有装饰物的杯子的实现类,pendant()方法是挂了一个小猪
Spring如何实现装饰器模式?
Spring在进行Datasource配置的时候,有些是针对oracle的,有些是针对Mysql的。Spring需要在其中进行动态的切换来将SqlSessionFactory创建出来。
5.6 代理模式
什么是代理模式?
简单了解就是,在原本可以直接操作的类中间放一层代理层
也就是原本一个类的功能,可以被另一个代理类来使用
Spring如何实现?
AOP的实现就是代理模式最大的例子。无论是动态代理还是静态的生成代理类都是一种代理的方式。都是从开发者的角度来增强方法
不再赘述代理模式的实现(AOP动态代理的实现)
5.7 观察者模式
什么是观察者模式?
一种行为型的模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
实现案例?
不恰当的例子:我们使用的Cannl、MQ的通知型等等
Spring中如何实现?
Spring的ApplicationEvent事件监听机制