天天看点

结构型设计模式之适配器模式

适配器模式的意图在于,使用不同接口的类所提供的服务为客户端提供它所期望的接口,从而能够兼容工作。

分为

  1. 类适配器模式 通过新的适配类实现客户端期望的接口,并继承现有的需要适配的类。
  2. 对象适配器模式 客户端没有暴露出期望的接口,而是类或者抽象类,此时只能使用对象适配器模式,继承客户端期望的类,然后使用委派(组合),使新的适配器类拥有一个被适配类的实例对象。可能比类适配器更脆弱,因为新的适配器类可能无法使用一些被适配器类中的protected类型的方法或变量。

jdk中的适配器模式:

  1. 字节流与字符流的转换,通过InputStremReader类完成。InputStreamReader类(Adapter)继承了Reader(Target),并且通过构造函数传入一个InputSream的实例(Adaptee),实现了jdk面向字节的输入向面向字符输入的转换。
  2. 在java GUI api中,MouseAdapter抽象类将MouseListener接口中的方法全部实现为空方法,相当于一个桩(stub),当程序中某个组件需要添加一个事件处理时,可以继承MouseAdapter。根据设计模式中的定义来说,MouseAdapter并没有实现真正意义上的适配或转换,Adapter的职责由它的子类完成。