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的工作机制(下)的更多相关文章

  1. 第2章 深入分析java I/O的工作机制(上)

    java的I/O操作类在包java.io下,大致分成4组: 所有文件的存储都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再存储这些字节到磁盘.在读取文件时,也是一个 ...

  2. 第二章 深入分析Java I/O的工作机制(待续)

    Java的I/O类库的基本架构 磁盘I/O工作机制 网络I/O工作机制 NIO的工作方式 I/O调优 设计模式解析之适配器模式 设计模式解析之装饰器模式 适配器模式与装饰器模式的区别

  3. 第二章:深入分析java I/O的工作机制

    .2.1 java的I/O类库的基本架构 I/O的机器获取和交换信息的主要渠道,在当今数据大爆炸时代,I/O问题尤其突出,很容易成为一个性能瓶颈,Java在I/O上也一直做持续的优化,现在也引入了NI ...

  4. 深入分析 Java I/O 的工作机制--转载

    Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道.在当今这个数据大爆炸时代, ...

  5. 深入分析 Java I/O 的工作机制

    I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动.这个流动的过程中都涉及到 I/O 问题,可以说大部分 Web 应用系统的瓶颈都是 ...

  6. 深入分析Java I/O的工作机制 (一)

    此篇博客看至许令波的深入分析javaWeb内幕书籍, 此篇博客写的是自己看完之后理解的重点内容,加一些理解,希望对你有帮助. 1.Java的I/O类库的基本架构 先说一下什么是类库:可以说是类的集合, ...

  7. 深入分析Java I/O的工作机制 (三)网络I/O的工作机制 很详细

    3.网络I/O的工作机制 前言:数据从一台主机(服务端)发送到网络中的另一台主机(客户端)需要经过很多步骤:首先需要有相互沟通的意向.其次要有能够沟通的物理渠道(物理链路):是通过电话,还是直接面对面 ...

  8. 深入分析Java I/O的工作机制 (二)

    2.磁盘I/C工作机制 2.1几种访问文件的方式 内核空间和用户空间:内核空间是内核使用,用户空间是应用程序使用:除非编译内核要考虑内核空间,其余情况都可以按照用户空间处理.将用户空间和内核空间置于这 ...

  9. 【深入分析Java Web技术内幕】2、深入分析Java I/O的工作机制

    Java的I/O类库的基本架构 基于字节操作的IO接口:InputStream.OutputStream 基于字符操作的IO接口:Writer.Reader 基于磁盘操作的IO接口:File 基于网络 ...

随机推荐

  1. 一台电脑上同时使用两个github账户

    需求:公司有github账号,自己有github账号,想在Git上同时使用,两者互不干扰. 思路:管理两个SHH key. 解决办法: 一.生成两个SSH key 为了举例方便,这里使用“one”和“ ...

  2. 使用科大讯飞时碰上的问题(unity调用Android)

    使用科大讯飞的时候公司已经有人配置好了Android项目,由于装机量的限制,所以基本上要更换里面的资源和更改app_id,然而在unity那边调用的时候总是出现各种各样的问题,特此记录下来 1.唤醒未 ...

  3. MSSQL2008 临时总结文档2014

    2.  索引可以建立在基表上(基表索引),也可以视图上称为视图索引. 基表索引是建立在表数据中的,故视图索引是建立在查询后的结果集上的. (假如建立了视图索引)当从视图中取数据的时候,优化查询分析器会 ...

  4. Ajax基础(二)--获取服务器文件

    获取服务器文件相关步骤: 1.创建文件: 2.创建XMLHttpRequest对象: 3.获取文件(注意事项:1)在服务器中运行测试:2)注意编码问题,编码要统一). 3.1 获取xml文件: HTM ...

  5. Quartz快速入门

    Quartz是一个定时任务调度的框架,在预定的时间到达时,执行某一任务 可认为是JDK的Timer类的扩展 Quartz的核心接口Scheduler – 核心调度器Job – 任务JobDetail ...

  6. [eShopOnContainers 学习系列] - 01 - Roadmap and Milestones for future releases

    https://github.com/dotnet-architecture/eShopOnContainers/wiki/01.-Roadmap-and-Milestones-for-future- ...

  7. css11动态效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. Tiny4412 Android5.0 定制:编译生成img后如何删除原厂的apk

    在android-5.0.2/build/core/Makefile的315行可以看到,这里是apk生成签名相关的地方. 315 name := $(TARGET_PRODUCT) 316 ifeq ...

  9. setInterval()和setTimeout()可以接收更多的参数

    setInterval()和setTimeout()可以接收更多的参数,那么这些参数是干什么用的呢?从第三个参数开始,依次用来表示第一个参数(回调函数)传入的参数,例如: setTimeout(fun ...

  10. [css小技巧]input去除边框问题

    border:none;是不够的 (1)在谷歌浏览器添加 outline: none;去除点击后产生的边框; (2)IE7下border: none;还会有边框存在,改用border: 0;即可,同时 ...