• 第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 适配器模式与装饰器模式的区别

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

  • 相关阅读:
    npm更换成淘宝镜像源以及cnpm
    Windows下使用CMD命令进入MySQL数据库
    python 中 __name__ == '__main__'该如何理解与其作用介绍
    SQL Server数据库一直显示“正在还原”的解决方法
    如何更改SqlServer数据库登录验证模式
    cookie与session区别
    基于layui的select change事件ajax响应(主要用于省市区级联响应,其他的只要修改一下也可适应)
    字母、汉字、特殊符号组成的字符串排序问题
    The source attachment does not contain the source for the file HashMap.class
    Mysql常见SQL查询应用场景
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7375847.html
Copyright © 2020-2023  润新知