适配器模式初步理解
适配器模式
简介
在软件设计中,为了解决接口不一致的问题,两个软件模块之间往往也需要通过一个适配器类(Adapter)进行适配,这样的模式叫做适配器设计模式
该模式分为两种:
- 类适配器模式
- 对象适配器模式
引入
现在有一个类Adaptee,里面有一个方法Operation1
现在要使用类Adaptee的方法Operation1,同时也要使用另一个方法Operation2,而Operation2在类中不存在,怎样解决?
解决方案
- 修改类Adaptee,在其中加入方法Operation2(不可取)
因为用户很可能没有该类的源代码,而只有可运行的程序;即使有该类的源代码,修改一个成熟、可靠的类代码,加入新功能的做法只能取得事倍功半的效果
- 用一个Target接口声明所有需要的方法,并且用另外一个Adapter类实现Target接口中的所有方法,Adapter继承Adaptee类(类适配器模式)
设计要点:
- 一个Target接口声明所有需要的方法(Operation1、Operation2)
- 一个Adapter类继承Adaptee类,并实现Target接口
利用Java的继承原理,Operation1已经被Adapter继承了,所以Adapter类只需要实现Operation2即可,在Adapter中不需要声明Operation1
因为Java语言的特性,如果有两个或两个以上的类Adapter1、Adapter2需要被适配,则不能使用类适配器模式进行设计
- 使用对象适配器模式
- 在Target接口中声明Operation1、Operation2
- 在Adapter类中,需要实现两个方法Operation1与Operation2,在实现Operation1时,在其代码中实现对Adaptee的Operation1的调用
区别
类适配器模式对被适配对象采用了继承
对象适配器模式对被适配对象采用的是调用,实现类需要实现所有方法