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

开发者在线 Builder.com.cn 更新时间:2008-02-27作者:gaolin_bei 来源:CSDN

本文关键词: Java Adapter Decorator

四 适配器模式的应用
 适配器模式是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);


}


//其它代码



用户评论

  • 用户名
  • 评论内容