理解设计模式(适配器)

  适配器模式,转换不同接口,实现兼容。

特定环境

  • 接口兼容
    —使用现有类,但使用方式与原有方式不同,需要转换
    —现有接口兼容第三方组件
    —保留并使用原系统类的功能,但客户端访问方式发生变化,同时无法修改原有代码时

  • 相近功能类间的转换

一类问题

接口不兼容的类,不能协同合作

解决方案

3个角色:

  • 目标接口 Target : 提供期待的使用方式,由类或接口实现
  • 被适配者 Adaptee : 类原有使用方式,由类或接口实现
  • 适配器 Adapter : 封装Adaptee引用,实现或继承Target,重写Target方法,封装Adaptee方法

类适配器和对象适配器

类适配器通过多重继承,来对接口进行匹配

Java不支持多重继承,暂不作讨论

优劣

优点:

  • 复用类,减少开发量
  • 可扩展原有类功能
  • 可通过目标接口,使用多个被适配者
  • 被适配者对接口使用者透明
  • 目标接口和被适配者解耦

缺点:
对于对象适配器,适配器的编写或修改,较为复杂

因为,需要原系统提供接口(即被适配者的API),并需要理解其适用环境

参考

设计模式学习笔记-适配器模式, 作者: Wang Juqiang