插头转换问题
场景
不改变原代码基础上适配其他接口
代码
类适配器
采取继承方式
- 适配器类实现目标类接口
- 适配器类继承来源类
1 | interface Src { |
使用
1 | Target target = new SrcTargetAdapter(); |
对象适配器实现
采取组合的方式
- 适配器类实现目标类接口
- 适配器类包含来源类的实例
- 让原对象提供新接口的实现
1 | interface Src { |
使用
1 | Src src = new SrcImpl(); |
接口适配器
适配器抽象类空实现接口,这样使用时无需实现所有,只需要实现所需方法即可
1 | interface Target { |
使用
1 | Target target = new TargetAdapter(){ |
优缺点
- 方便外来代码集成
应用
-
java.io.InputStreamReader
InputStreamReader继承Reader类,即把InputStream适配成了Reader -
java.util.concurrent.Executors内部类RunnableAdapter
把runnable转换成callable
一分也是爱~
版权声明
This site by Linest is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由Linest创作并维护的博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文永久链接:http://linest.github.io/2016/11/15/java-pattern-adapter/