装饰器模式之java IO流

来源:互联网 发布:linux漏洞公布 编辑:程序博客网 时间:2024/06/14 01:26

例如现在有这样一个需求:读取一个文件里面的内容,将文件里的内容所有的小写字母都转换成大写的。这个时候我们就可以通过去扩展IO流去做。

package com.unis.io;  2.  3.import java.io.BufferedReader;  4.import java.io.File;  5.import java.io.FileReader;  6.import java.io.FilterReader;  7.import java.io.IOException;  8.import java.io.Reader;  9.  10.public class UppCaseReader extends FilterReader {  11.  12.    public UppCaseReader(Reader in) {  13.        super(in);  14.    }  15.  16.    @Override  17.    public int read(char[] cbuf, int off, int len) throws IOException {  18.        int result = super.read(cbuf, off, len);   19.        for(int i=off;i<len;i++){  20.            if(cbuf[i]>='a'&&cbuf[i]<='z'){  21.                cbuf[i] -= 32;  22.            }  23.        }  24.        return result;  25.    }  26.  27.//  @Override  28.//  public int read() throws IOException {  29.//      int result = super.read();  30.//      if(result>='a'&&result<='z'){  31.//          result-=32;  32.//      }  33.//      return result;  34.//  }  35.      36.    public static void main(String[] args) throws IOException {  37.        Reader reader = new BufferedReader(new UppCaseReader(new FileReader(new File("src/com/unis/io/UppCaseReader.java"))));  38.        int i =0;  39.        while((i=reader.read())!=-1){  40.            System.out.print((char)i);  41.        }  42.    }  43.}  

 Reader reader = new BufferedReader(new UppCaseReader(new FileReader(new File("src/com/unis/io/UppCaseReader.java"))));  

是典型的装饰器模式的运用语句。每封装一次,就添加一个新的功能。




0 0
原创粉丝点击