快速业务通道

Java IO 包中的Decorator模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
; import java.io.IOException; import java.io.OutputStream; /** * A new output stream, which will check the space character * and won’t write it to the output stream. * @author Magic * */ public class SkipSpaceOutputStream extends FilterOutputStream {   public SkipSpaceOutputStream(OutputStream out) {    super(out);   }   /**   * Rewrite the method in the parent class, and   * skip the space character.   */   public void write(int b) throws IOException{    if(b!=’ ’){     super.write(b);    }   } }

它从FilterOutputStream继承,并且重写了它的write(int b)方法。在write(int b)方法中首先对输入字符进行了检查,如果不是空格,则输出。

以下是一个测试程序:

以下是代码片段:

import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * Test the SkipSpaceOutputStream. * @author Magic * */ public class Test {   public static void main(String[] args){    byte[] buffer = new byte[1024];    /**    * Create input stream from the standard input.    */    InputStream in = new BufferedInputStream(new DataInputStream(System.in));    /**    * write to the standard output.    */    OutputStream out = new SkipSpaceOutputStream(new DataOutputStream(System.out));    try {     System.out.println("Please input your words: ");     int n = in.read(buffer,0,buffer.length);     for(int i=0;i〈n;i++){      out.write(buffer[i]);     }    } catch (IOException e) {     e.printStackTrace();    }   } }

执行以上测试程序,将要求用户在console窗口中输入信息,程序将过滤掉信息中的空格,并将最后的结果输出到console窗口。比如:

以下是引用片段:

Please input your words:

a b c d e f

abcdef

总 结

在java.io包中,不仅OutputStream用到了Decorator设计模式,InputStream,Reader,Writer等都用到了此模式。而作为一个灵活的,可扩展的类库,JDK中使用了大量的设计模式,比如在Swing包中的MVC模式,RMI中的Proxy模式等等。对于JDK中模式的研究不仅能加深对于模式的理解,而且还有利于更透彻的了解类库的结构和组成。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号