第2章 深入分析java I/O的工作机制(下)
2.6 设计模式解析之适配器模式
2.6.1 适配器模式的结构
把一个类的接口变换成一客户端能接受的另一个接口。
Target(目标接口): 要转换的期待的接口。
Adaptee(源角色):需要适配的接口。
Adapter(适配器):将源接口适配成目标接口,继承源接口,实现目标接口。
2.6.2 JAVA I/O 中的适配器模式
JAVA I/O中许多这样的需求,如将字符串数据变成字节数据保存到文件中,将字节数据转变成流数据等。
InputStreamReader和OutPutStreamWriter类分别继承了Reader和Write接口,但是要创建他们的对象,必须传入InputStream和OutputStream的实例。InputStreamReader和
OutPutStreamWriter的作用就是将InputStream和Outputstream适配到Reader和Writer。
InputStreamReader实现了Reader接口,并且持有了InputStream的引用,这里是通过StreamDecoder类间接持有的,因为从byte到char要经过编码。
适配器是InputStreamReader, 源角色是InputStream代表的实例对象,目标接口是Reader。
此外,StringReader将一个String类适配到Reader接口;ByteArrayInputStream适配器将byte数组适配到InputStream接流处理接口。
2.7 设计模式解析之装饰器模式
2.7.1 装饰器模式的结构
将某个类重新装扮一下,使他比以前更加漂亮 或功能更多。但是原来类的使用者还不应该感受到装饰前后的不同,否则就破坏了原来类的结构,所以装饰器模式要做到对装饰使用者透明。
Component: 抽象组件角色。定义了一组抽象的接口,规定了这个被装饰的组件都有哪些功能。
ConcreteComponent: 实现了抽象组件的功能
Decorator: 装饰器角色,它持有一个Component对象实例的引用,定义了与抽象组件一致的接口。
ConcreteDecorator: 具体的装饰器实现者,负者实现装饰器角色定义的功能。
2.7.2 JAVA I/O 中的装饰器模式
InputStream类就是以抽象组件存在的:而FileInputStream就是具体的组件,实现了抽象组件的所有接口;FilterInputStream就是装饰角色,实现了InputStream的所有接口,并且持有InputStream的对象实例的引用;BufferedInputStream是具体的装饰器实现者,它给inputstream附加了功能,作用就是使得InputStream读取的数据保存在内存中,而提高性能。
2.8 适配器模式与装饰器模式的区别
装饰器模式和适配器模式都一个别名是包装模式。适配器模式是要将一个接口转变成另外一个接口,通过改变接口来达到重复使用的目的;装饰模式是要保持接口,但是给增强接口功能,或者是提高性能。
第2章 深入分析java I/O的工作机制(下)的更多相关文章
- 第2章 深入分析java I/O的工作机制(上)
java的I/O操作类在包java.io下,大致分成4组: 所有文件的存储都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再存储这些字节到磁盘.在读取文件时,也是一个 ...
- 第二章 深入分析Java I/O的工作机制(待续)
Java的I/O类库的基本架构 磁盘I/O工作机制 网络I/O工作机制 NIO的工作方式 I/O调优 设计模式解析之适配器模式 设计模式解析之装饰器模式 适配器模式与装饰器模式的区别
- 第二章:深入分析java I/O的工作机制
.2.1 java的I/O类库的基本架构 I/O的机器获取和交换信息的主要渠道,在当今数据大爆炸时代,I/O问题尤其突出,很容易成为一个性能瓶颈,Java在I/O上也一直做持续的优化,现在也引入了NI ...
- 深入分析 Java I/O 的工作机制--转载
Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道.在当今这个数据大爆炸时代, ...
- 深入分析 Java I/O 的工作机制
I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动.这个流动的过程中都涉及到 I/O 问题,可以说大部分 Web 应用系统的瓶颈都是 ...
- 深入分析Java I/O的工作机制 (一)
此篇博客看至许令波的深入分析javaWeb内幕书籍, 此篇博客写的是自己看完之后理解的重点内容,加一些理解,希望对你有帮助. 1.Java的I/O类库的基本架构 先说一下什么是类库:可以说是类的集合, ...
- 深入分析Java I/O的工作机制 (三)网络I/O的工作机制 很详细
3.网络I/O的工作机制 前言:数据从一台主机(服务端)发送到网络中的另一台主机(客户端)需要经过很多步骤:首先需要有相互沟通的意向.其次要有能够沟通的物理渠道(物理链路):是通过电话,还是直接面对面 ...
- 深入分析Java I/O的工作机制 (二)
2.磁盘I/C工作机制 2.1几种访问文件的方式 内核空间和用户空间:内核空间是内核使用,用户空间是应用程序使用:除非编译内核要考虑内核空间,其余情况都可以按照用户空间处理.将用户空间和内核空间置于这 ...
- 【深入分析Java Web技术内幕】2、深入分析Java I/O的工作机制
Java的I/O类库的基本架构 基于字节操作的IO接口:InputStream.OutputStream 基于字符操作的IO接口:Writer.Reader 基于磁盘操作的IO接口:File 基于网络 ...
随机推荐
- WPF布局控件常用属性介绍
WPF布局控件常用属性介绍 其它 | 作者:慧都控件网 | 2011-04-06 13:41:57| 阅读 0次 有用(0) 评论(0) 概述:WPF布局控件都是派生自System.Windows ...
- Autolayout .Compact or .Regular [iPhone/iPad]
- 教你10步闯进google play排行榜前列
1.正视最高榜单的价值 我们需要了解排名对你的游戏的价值,进入前20名你的游戏获得每日至少1万5千的安装量,而前10名获得至少2万5千的安装量.通过奖励性广告网络而获得这些流量需要你每日支付至 ...
- 《Scala入坑笔记》缘起 3天就搞了一个 hello world
有小伙伴向我咨询 play framework 的问题,我就想了解一下 play framework ,按照官方的文档,要使用 SBT 安装,就掉进了 SBT 的坑. 第一坑:国外仓库太慢 安装完成后 ...
- JMX心得 -- Server端
关于什么是JMX,这里引用了网上找来的一个介绍:JMX(JavaManagement Extensions)是一个为应用程序植入管理功能的框架.JMX是一套标准的代理和服务,实际上,用户可以在任何Ja ...
- Kali Linux使用Aircrack破解wifi密码(wpa/wpa2)
Kali Linux能做很多事,但是它主要以渗透测试及'破解wifi密码'闻名. 如果你使用Macbook 请看 使用macbook破解WPA/WPA2 wifi密码 要求: 安装有Kali Linu ...
- ubuntu 设置plank开机自启之后关机键失效变为注销键
之前因为猎奇心,给我的ubuntu系统换了一个macUbuntu的桌面,但是之前用的dock是docky,昨日闲来无聊换成了plank,设置成然后就发现我的系统关不了机了,只能通过指令关机. 百度之后 ...
- 常用的两个PHP类
/** * Class Interval * @author logonmy * @desc 简单分析程序执行时间: */ Class Interval{ var $start; publ ...
- 【精品分享一】JAVA 精品图书高清PDF下载
更多图书尽在第一云教育book.1eduyun.com JAVA核心技术卷2:高级特征(原书第8版) JAVA软件开发从新手到高手(Java从入门到精通(第3版)+Java项目开发全程实录(第3版)) ...
- weblogic控制台的启动与禁用
在一些安全漏洞扫描中,经常会扫描发现,使用weblogic管理控制台,会有个中危的漏洞. http://192.168.10.46:7001/console/login/LoginForm.jsp W ...