科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道从Decorator,Adapter模式看Java/IO库(三)

从Decorator,Adapter模式看Java/IO库(三)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Decorator,Adapter模式学习笔记。

作者:gaolin_bei 来源:CSDN 2008年2月27日

关键字: java Adapter Decorator

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

四 适配器模式的应用
 适配器模式是Java I/O库中第二个最为重要的设计模式。
 InputStream原始流处理器中的适配器模式
 InputStream类型的原始流处理器是适配器模式的应用。
 ByteArrayInputStream是一个适配器类
 ByteArrayInputStream继承了InputStream的接口,而封装了一个byte数组。换言之,它将一个byte数组的接口适配成InputStream流处理器的接口。
 我们知道Java语言支持四种类型:Java接口,Java类,Java数组,原始类型(即int,float等)。前三种是引用类型,类和数组的实例是对象,原始类型的值不是对象。
 也即,Java语言的数组是像所有的其他对象一样的对象,而不管数组中所存储的元素类型是什么。这样一来的话,ByteArrayInputStream就符合适配器模式的描述,是一个对象形式的适配器类。
 FileInputStream是一个适配器类
  在FileInputStream继承了InputStrem类型,同时持有一个对FileDiscriptor的引用。这是将一个FileDiscriptor对象适配成InputStrem类型的对象形式的适配器模式,如下图所示:

     从Decorator,Adapter模式看Java/IO库(三)

查看JDK1.4的源代码我们可以看到:

 Public class FileInputStream extends InputStream


 /* File Descriptor - handle to the open file */


   private FileDescriptor fd;


   public FileInputStream(FileDescriptor fdObj) {


     SecurityManager security = System.getSecurityManager();


     if (fdObj == null) {


throw new NullPointerException();


}


if (security != null) {


security.checkRead(fdObj);


}


fd = fdObj;


}


public FileInputStream(File file) throws FileNotFoundException {


String name = file.getPath();


SecurityManager security = System.getSecurityManager();


if (security != null) {


security.checkRead(name);


}


fd = new FileDescriptor();


open(name);


}


//其它代码




							

						
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章