策略模式
策略模式是一种为了适应算法灵活性而产生的行为型设计模式。策略模式的主要目的是将算法的定义与使用分开,也就是将算法的行为和环境分开,将算法的定义放在专门的策略类中,每一个策略类封装了一种实现算法,使用算法的环境类针对抽象策略类进行编程,符合“依赖倒转原则”。
- Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略
- Strategy(抽象策略类): 它为所支持的算法声明了抽象方法,是所有策略类的父类,它可以是抽象类或具体类,也可以是接口。环境类通过抽象策略类中声明的方法在运行时调用具体策略类中实现的算法。
- ConcreteStrategy(具体策略类):抽象策略类的一个具体实现,封装了某种具体的算法
源码解析
前端控制器DispacherServlet
处理请求需要依赖很多组件类,如处理器映射HandlerMapping
,处理器适配器HandlerAdapter
,视图解析器ViewResolver
等,每种组件都有多种具体的实现,而DispcherServlet中只依赖组件的抽象接口。
DispcherServ