0%

适配器模式

适配器模式

适配器的作用其实就是一个转换头,适配器模式就是将一个类的接口,转换成客户期望的另一个接口,让原本接口不兼容的类可以一起工作,主要功能是进行转换匹配,目的是复用已有的功能

转换接口

核心概念

  • 目标角色 Target 所期望得到的接口
  • 被适配的角色 Adaptee 目前使用的接口,但是不符合需要,需要进行适配
  • 适配器角色 Adaper 适配器,将接口进行转换

适配器模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class SimpleControllerHandlerAdapter implements HandlerAdapter {

@Override
public boolean supports(Object handler) {
return (handler instanceof Controller);
}

@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {

return ((Controller) handler).handleRequest(request, response);
}

@Override
public long getLastModified(HttpServletRequest request, Object handler) {
if (handler instanceof LastModified) {
return ((LastModified) handler).getLastModified(request);
}
return -1L;
}

}

还有常见的xxxWrapper类也是适配器的思想

优缺点

优点

  • 使用适配器可以重用一个现有的类,以满足客户端的需要,让之前实现的功能得到复用
  • 在实现适配器功能时,可以自由的调用自己开发的功能,较自由的进行系统的扩展

缺点

  • 过多的使用适配器会使得系统非常凌乱,不适合在系统前期的设计阶段使用,而应该用于后期的补偿机制

使用场景

  • 已经存在的类的接口不符合我们的要求
  • 想创建一个可以复用的类,这个类可能和一些不兼容的类一起工作,可以使用适配器模式
  • 想使用一些已存在的子类,但是不可能对每一个子类都进行适配,可以使用对象适配器
  • 适配类的接口以匹配客户端期待的接口

欢迎关注我的其它发布渠道