1. 程式人生 > >自己動手實現一個java過濾器類

自己動手實現一個java過濾器類


 過濾器採用了裝飾者設計模式:

package myFliter;
import java.io.*;
public class LowerCaseInputStream extends FilterInputStream{

 public LowerCaseInputStream(InputStream in) {
  super(in);
 }

 @Override
 public int read() throws IOException {
  int c=super.read();
  if(c==-1)
  {
   return c;
  }
  else
  {
   return Character.toLowerCase(c);
  }
 }

 //@Override
public int read(byte[] b, int off, int len) throws IOException {
  
 int result=super.read(b, off, len);
 for(int i=off;i<result+off;i++)
 {
  b[i]=(byte)Character.toUpperCase((char)b[i]);
 }
 return result;
 }  
}

測試程式碼

package myFliter;
import java.io.*;
public class testFilter {
 public static void main(String []args)
 {//裝飾者不光可以裝飾被裝飾類,還可以裝飾被裝飾類的子類
  try{
  InputStream in=new LowerCaseInputStream(
   new BufferedInputStream(new FileInputStream("c://text.txt")));
  byte b[]=new byte[100];
  in.read(b, 0, 100);
  for(int i=0;i<b.length;i++)
  {
   if(i<28)
   {
   System.out.print((char)b[i]);
   }
   else
   {
    System.out.println((int)b[i]);
   }
  }
  
  }catch (IOException e)
  {
   e.printStackTrace();
  }
  
 }

}