「Spring」Spring中使用的设计模式(二)

75 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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 装饰器模式

什么是装饰器模式?

就是给类本身增加一些功能,增强类。而且是动态的按照需要增强类的各个属性方法等

  1. 动态增加功能,动态撤销
  2. 类功能类似于子类的扩展

Decorator

举个例子

  1. 杯子这个接口,有一个方法,takeInWater();装水
  2. 有大杯子和小杯子,大杯子可以装1000ml,小杯子可以装500ml
  3. 有一个带有装饰物的杯子的抽象类,其中有一个属性是杯子,还有一个方法是挂件pendant()
  4. 带有装饰物的杯子的实现类,pendant()方法是挂了一个小猪

Spring如何实现装饰器模式?

Spring在进行Datasource配置的时候,有些是针对oracle的,有些是针对Mysql的。Spring需要在其中进行动态的切换来将SqlSessionFactory创建出来。

5.6 代理模式

什么是代理模式?

简单了解就是,在原本可以直接操作的类中间放一层代理层

也就是原本一个类的功能,可以被另一个代理类来使用

Spring如何实现?

AOP的实现就是代理模式最大的例子。无论是动态代理还是静态的生成代理类都是一种代理的方式。都是从开发者的角度来增强方法

不再赘述代理模式的实现(AOP动态代理的实现)

5.7 观察者模式

什么是观察者模式?

一种行为型的模式

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

实现案例?

不恰当的例子:我们使用的Cannl、MQ的通知型等等

Spring中如何实现?

Spring的ApplicationEvent事件监听机制