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. 案例学习:留言本制作V1、V2

    需求V1: 请设计一个留言本功能的程序,包括普通用户发布和查看留言,管理员登录.查看和删除留言. 实验指导内容详见留言本制作(1) 需求V2: 1.请修改留言本程序的功能,添加普通用户添加登录功能,用 ...

  2. Django进阶Model篇004 - ORM常用操作

    一.增加 create和save方法 实例: 1.增加一条作者记录 >>> from hello.models import * >>> Author.object ...

  3. MailUtils 测试邮件是否发送

    import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail ...

  4. 33-THREE.JS 圆柱体

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...

  5. SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. http://blog.csdn.net/forezp/art ...

  6. Spring:org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class

    很长时间没有使用Spring,Hibernate,Struts2等一些框架了,现在使用起来还是有点陌生,今天刚弄就在Tomcat在启动的时候是报的这个错误: org.springframework.b ...

  7. Week07《Java程序设计》第七次作业总结

    Week07<Java程序设计>第七次作业总结 1. 本周学习总结 1.1 思维导图:Java图形界面总结 答: 1.2 可选:使用常规方法总结其他上课内容. 答: 1. Swing组件: ...

  8. WebSocket 在烧瓶和龙卷风中的应用

    a. 安装 pip3 install gevent-websocket 作用: - 处理Http.Websocket协议的请求 -> socket - 封装Http.Websocket相关数据 ...

  9. android自定义view系列:认识activity结构

    标签: android 自定义view activity 开发中虽然我们调用Activity的setContentView(R.layout.activity_main)方法显示View视图,但是vi ...

  10. Angular提示文件不是一个有效的模块

    ERROR in src/app/app.component.ts(2,23): error TS2306: File '/home/jerry/angular/todo/src/app/model. ...