1、适配器模式
spring中的aop和处理http请求的HandlerAdapter。
aop中:配置的是adviser增强。需要的是interceptor。spring是根据拦截器链来做增强的。所以需要将配置的advisor(adaptee被适配)进行适配为 interceptor。target为AdvisorAdapter。
好处:类似于旧系统的改造。因为老的adviser不能直接用。
dispatcher中的handlerAdapter:被适配者为handler(controller), 而dispatcher不做各种handler类型的判断,只需要一个适配器handlerAdapter,在适配器中判断对应handler的类型,即每一个controller都有对应的适配器。
好处:解耦,易于扩展。
2、代理模式
aop:动态生成代理对象,实现aop的织入功能。
3、观察者模式。
基本定义:观察者,被观察者,事件。
spring中的事件驱动模型就是用的该模式。
spring中想要实现事件模式,就必须实现相应的接口,观察者为 applicationListener,事件为applicationEvent, 被观察者为发布事件的applicationEventPublishxxx。
4、简单工厂
beanfactory。根据名称获取到工厂里的对象。
5、装饰者模式
概念还是好理解:在原有功能基础上添加功能。
需要用到继承,因为是功能的扩展。
应用:jdk中的io。
每个装饰器都需要继承抽象装饰者类,抽象装饰者实现基础类。
这样每个装饰器和被装饰者都是同一种类型。
6、模板方法
使用继承来实现,和继承的区别是,父类规定了整体的逻辑
作用:代码逻辑更加清晰。类似于继承。但是比继承多了一层限制。
应用:jdk中Thread的实现,run方法留给子类实现业务逻辑,父类Thread规定好了线程管理逻辑和业务逻辑。