简述

适配器模式,目的是将A对象通过适配、转换的方式转换成B对象来使用,为什么转换为B对象?因为用户通过依赖B对象来使用。

适配器的实现有两种方式。

继承实现

组合实现

基于Java单继承的机制,组合实现的方式更为常见、灵活。

Reader、InputStream之间的适配,字符流、字节流之间的适配

Demo代码就不写了,去JDK看一个使用例子,是很好的参考,就是IO中的ReaderInputStreamReaderInputStream

InputStream implements Closeable:

Reader implements Readable, Closeable:

InputStreamReader:

InputStreamReader的使用:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader; public class InputStreamTest { public static void main(String[] args) { try {
FileInputStream fis = new FileInputStream("D:/README.TXT"); // FileInputStream extends InputStream
InputStreamReader isr = new InputStreamReader(fis); // InputStreamReader extends Reader
BufferedReader br = new BufferedReader(isr); // BufferedReader extends Reader String s = null;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

思考题

适配器模式与装饰器模式的区别?

最新文章

  1. input框中的value值到底是什么
  2. python模拟登陆知乎并爬取数据
  3. 怎样设置Word下次打开时跳转到上次阅读的位置
  4. 浅谈html5网页内嵌视频
  5. linux 解压,源码包
  6. C#DateTime的用法
  7. 9.23 noip模拟试题
  8. sublime text 2相关
  9. 自定义Filter服务
  10. SMT贴片红胶基本知识
  11. php-laravel4.0框架 简单快速入门
  12. CCF-201412-3-集合竞价
  13. mysql优化-》查询缓存
  14. Access denied for user ‘root’@‘localhost’(using password: YES)的解决方法
  15. JVM调优工具
  16. VLC的一些接口
  17. 关于django编码问题所导致的502错误
  18. flask的变量和函数
  19. 如何解析读取excel数据
  20. 【转载】Apache Jena TDB CRUD operations

热门文章

  1. ios中layoutsubview何时被调用
  2. 【总结 】550,535,553 Mail from must equal authorized user— jenkins(hudson) email163邮箱和26邮箱成功配置总结
  3. Ubuntu 下用命令行快速打开html,mp3等文件
  4. mysql 排序 oder by 和 使用hibernate 排序
  5. Mysql5.6 make 错误以及解决办法
  6. 剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣 创建线程数公式(MaxProcessMemory - JVMMemory – ReservedOsMemory)
  7. c语言之函数参数传递之数组篇(转)
  8. 【ASP.NET】@RenderBody,@RenderPage,@RenderSection的使用
  9. 【jQuery】利用jQuery实现“记住我”的功能
  10. mysql数据库优化 pt-query-digest使用