zoukankan      html  css  js  c++  java
  • 第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 适配器模式与装饰器模式的区别

       装饰器模式和适配器模式都一个别名是包装模式。适配器模式是要将一个接口转变成另外一个接口,通过改变接口来达到重复使用的目的;装饰模式是要保持接口,但是给增强接口功能,或者是提高性能。

  • 相关阅读:
    注册接口
    配置node 的路由
    mongoose 与 mylab 的使用 (1)
    PHP中PDO错误/异常(PDOException)处理
    如何使用PDO查询Mysql来避免SQL注入风险?ThinkPHP 3.1中的SQL注入漏洞分析!
    PHP5中PDO的入门教程
    PHP文件夹文件拷贝/复制函数 dir_copy($src = '', $dst = '')
    php将图片以二进制保存到mysql数据库并显示
    php 显示sqlserver二进制图片
    XML文档的PHP程序查询代码
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7375847.html
Copyright © 2011-2022 走看看