Java设计模式(八) 适配器模式
适配器模式可将一个类的接口转换成调用方希望的另一个接口。这种需求往往发生在后期维护阶段,因此有观点认为适配器模式只是前期系统接口设计缺乏的一种弥补。有时不同产商的功能类似但接口很难完全一样,而为了系统使用方式的一致性,也会用到适配器模式...
点击上方
大数据架构 快速关注
大数据架构 快速关注
适配器模式
适配器模式可将一个类的接口转换成调用方希望的另一个接口。这种需求往往发生在后期维护阶段,因此有观点认为适配器模式只是前期系统接口设计缺乏的一种弥补。从实际工程来看,并不完全这样,有时不同产商的功能类似但接口很难完全一样,而为了系统使用方式的一致性,也会用到适配器模式。适配器模式定义
适配器模式(Adapter Pattern),将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式类图
适配器模式类图如下(点击可查看大图)
适配器模式角色划分
- 目标接口,如上图中的ITarget
- 具体目标实现,如ConcreteTarget
- 适配器,Adapter
- 待适配类,Adaptee
本文代码可从作者Github下载
https://github.com/habren/JavaDesignPattern/tree/master/AdapterPattern/src/main
目标接口ITarget
目标接口实现类ConcreteTarget
待适配类Adaptee,其接口为onRequest,而非目标接口request
适配器类
从上面代码可看出,适配器类实际上是目标接口的类,因为持有待适配类的实例,所以可以在适配器类的目标接口被调用时,调用待适配对象的接口,而客户端并不需要知道二者接口的不同。通过这种方式,客户端可以使用统一的接口使用不同接口的类。
适配器模式适用场景
- 调用双方接口不一致且都不容易修改时,可以使用适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
- 多个组件功能类似,但接口不统一且可能会经常切换时,可使用适配器模式,使得客户端可以以统一的接口使用它们
- 客户端可以以统一的方式使用ConcreteTarget和Adaptee
- 适配器负责适配过程,而不需要修改待适配类,其它直接依赖于待适配类的调用方不受适配过程的影响
- 可以为不同的目标接口实现不同的适配器,而不需要修改待适配类,符合开放-关闭原则
- 依赖倒置原则
- 迪米特法则
- 里氏替换原则
- 接口隔离原则
- 单一职责原则
- 开闭原则
版权声明
原创文章,始发自作者个人博客www.jasongj.com。转载请在文章开头处注明转自【大数据架构】并注明原文链接http://www.jasongj.com/design_pattern/adapter/
长按下方二维码可快速关注
点击“阅读全文”,查看作者个人博客
↓↓
关注 大数据架构
微信扫一扫关注公众号