Java当中的IO(三)

1. 处理流的使用实例

2. 装饰者(Decorator)模式

3. 节点流与处理流的关系

 

1. 处理流的使用实例

    BufferedReader处理流介绍

         public String readline()  throws IO Exception

     对于下面这样的文件, 每一行都是关于一个人的信息, 这种情况每次读一行是非常方便的

        张三 F 20

        李四 M 21

        王五 F 22

        赵六 M 23

   BufferedReader使用方法

           生成BufferedReader对象的方法

                 BufferedReader in = new BufferedReader(newFileReader("foo.in"));

   BufferedReader处理流使用之前必须要有一个节点流

           new BufferedReader(newFileReader("foo.in"));实际是将节点流传递给处理流

 1 import java.io.*;
 2 
 3 class Test{
 4     public static void main(String args []){
 5         FileReader fileReader = null ;
 6         BufferedReader bufferedReader = null ;
 7         try{
 8             fileReader = new FileReader("e:/Java/src/IO3/from.txt");
 9             bufferedReader = new BufferedReader(fileReader);
10             String line = bufferedReader.readLine();
11             System.out.println(line);
12         }
13         catch(Exception e){
14             System.out.println(e);
15         }
16         finally{
17             try{
18                 bufferedReader.close();
19                 fileReader.close();
20             }
21             catch(Exception e){
22                 System.out.println(e);
23             }
24         }
25     }
26 }

               

 1 import java.io.*;
 2 
 3 class Test{
 4     public static void main(String args []){
 5         FileReader fileReader = null ;
 6         BufferedReader bufferedReader = null ;
 7         try{
 8             fileReader = new FileReader("e:/Java/src/IO3/from.txt");
 9             bufferedReader = new BufferedReader(fileReader);
10             String line = null;
11             while(true){
12                 line =  bufferedReader.readLine();
13                 if (line == null) break;
14                 System.out.println(line);
15             }            
16         }
17         catch(Exception e){
18             System.out.println(e);
19         }
20         finally{
21             try{
22                 bufferedReader.close();
23                 fileReader.close();
24             }
25             catch(Exception e){
26                 System.out.println(e);
27             }
28         }
29     }
30 }

               

 

2. 装饰者模式

          

          简化集成体系, 使用装饰者模式

          A公司规定工人进门要说“你好”

          B公司规定工人进门要穿鞋套

          以前定义一个工人的接口, 在分别建4个类, A水管工, A木匠, B水管工, B木匠...这样多几个公司就会越来越庞大

 1 interface Worker{ 2 public void doSomeWork(); 3 } 

1 class Carpenter implements Worker{
2     public void doSomeWork(){
3         System.out.println("修理门窗");
4     }
5 }
1 class Plumber implements Worker{
2     public void doSomeWork(){
3         System.out.println("修理水管");
4     }
5 }
 1 class AWorker implements Worker{
 2     private Worker worker ;  //Workwe类型的成员变量
 3     public AWorker(Worker worker){  
 4         this.worker = worker ;
 5     }
 6     public void doSomeWork(){
 7         System.out.println("你好");
 8         worker.doSomeWork();
 9     }
10 }
1 class Test01{
2     public static void main(String args []){
3         //生成一个A公司水管工对象
4         Plumber plumber = new Plumber();
5         AWorker aWorker = new AWorker(plumber);
6         aWorker.doSomeWork();
7     }
8 }

      

这样做的好处在哪呢 , 假如我们要A木匠工作

 1 class Test01{
 2     public static void main(String args []){
 3         //生成一个A公司水管工对象
 4         Plumber plumber = new Plumber();
 5         AWorker aWorker = new AWorker(plumber);
 6         aWorker.doSomeWork();
 7         
 8         Carpenter carpenter = new Carpenter();
 9         AWork awork2 = new AWorker(carpenter);
10         aWorker2.doSomeWork();
11     }
12 }

         

避免了继承结构, 这样就简化了模式

         

              AWorker叫做装饰者

              Carpenter, Plumber叫做 被装饰者

              装饰者 可以给被 装饰者 加些功能.

              将 被装饰者 参数传递 给 装饰者

posted @ 2014-05-21 14:51  Mirrorhanman  阅读(247)  评论(0编辑  收藏  举报