引言
最近在读springMVC源码的时候,发现在springMVC的整个流程架构当中,适配器模式是一个非常经典的应用,当然适配模式是一个比较简单的设计模式。
一、springMVC为什么使用适配器模式?
我们知道在springmvc的架构中,控制器(controller)的实现方式有多种,例如直接使用@Controller注解、直接实现 controller接口等, 每一种实现方式都对应不同的处理逻辑,所以如果我们直接调用controller的话,我们的代码就是这个鬼样子,一堆的if else....:
if(mappedHandler.getHandler() instanceof MultiActionController){
((MultiActionController)mappedHandler.getHandler()).xxx
}else if(mappedHandler.getHandler() instanceof XXX){
...
}else if(...){
...
}
如果我们是这样写代码的话, 现在如果又增加了一种controller的实现方式的话,我们就需要在上面方法中增加一个if else,这种形式就使得代码非常不好维护,并且也违反了设计模式中的开闭原则。
因此SpringMVC中 定义了一个适配器接口,使得每一种controller都对应一个 适配器类,让适配器代替controller执行对应的方法,这样我们在扩展controller的时候,只需要增加一个对应的适配器类就可以了。
下面我们看一下, 适配器模式的实现框架: