【设计模式】适配器模式与Reader、InputStream之间的适配
2024-10-19 16:22:41
简述
适配器模式,目的是将A对象通过适配、转换的方式转换成B对象来使用,为什么转换为B对象?因为用户通过依赖B对象来使用。
适配器的实现有两种方式。
继承实现
组合实现
基于Java单继承的机制,组合实现的方式更为常见、灵活。
Reader、InputStream之间的适配,字符流、字节流之间的适配
Demo代码就不写了,去JDK看一个使用例子,是很好的参考,就是IO中的Reader
、InputStreamReader
、InputStream
:
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();
}
}
}
思考题
适配器模式与装饰器模式的区别?
最新文章
- input框中的value值到底是什么
- python模拟登陆知乎并爬取数据
- 怎样设置Word下次打开时跳转到上次阅读的位置
- 浅谈html5网页内嵌视频
- linux 解压,源码包
- C#DateTime的用法
- 9.23 noip模拟试题
- sublime text 2相关
- 自定义Filter服务
- SMT贴片红胶基本知识
- php-laravel4.0框架 简单快速入门
- CCF-201412-3-集合竞价
- mysql优化-》查询缓存
- Access denied for user ‘root’@‘localhost’(using password: YES)的解决方法
- JVM调优工具
- VLC的一些接口
- 关于django编码问题所导致的502错误
- flask的变量和函数
- 如何解析读取excel数据
- 【转载】Apache Jena TDB CRUD operations
热门文章
- ios中layoutsubview何时被调用
- 【总结 】550,535,553 Mail from must equal authorized user— jenkins(hudson) email163邮箱和26邮箱成功配置总结
- Ubuntu 下用命令行快速打开html,mp3等文件
- mysql 排序 oder by 和 使用hibernate 排序
- Mysql5.6 make 错误以及解决办法
- 剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣 创建线程数公式(MaxProcessMemory - JVMMemory – ReservedOsMemory)
- c语言之函数参数传递之数组篇(转)
- 【ASP.NET】@RenderBody,@RenderPage,@RenderSection的使用
- 【jQuery】利用jQuery实现“记住我”的功能
- mysql数据库优化 pt-query-digest使用