Java IO(装饰者模式)

1、处理流的使用实例

BufferedReader—字符输入处理流

public String readline() throws IOException—读取1行数据

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

例:读取整个文本

import java.io.*;
class Test{
   public static void main(String args[]){
 
                 FileReader fileReader = null;
                BufferedReader bufferedReader = null;
     try{
             fileReader = new FileReader("d:/work/src/from.txt");   //被装饰者
             bufferedReader = new BufferedReader(fileReader);  //装饰者
            String line = null;
           while(true){
                    line = bufferedReader.readLine();
                   if(line ==null){
                     break;
                    }
                System.out.println(line);
           }
    }catch(Exception e){
                System.out.println(e);
  }finally{
        try{
                fileReader.close();
               bufferedReader.close();
   
   }catch(Exception e){
   
           System.out.println(e);
    }
  }
   }   
}

2、装饰者(Decorator)模式

interface Worker{

     public void doSomeWork();

}

//A公司的员工

class AWorker implements Worker{          

    private Worker worker;  
    public AWorker(Worker worker){  //构造函数
          this.worker = worker;
    }
       public void doSomeWork(){
                System.out.println("Hello.");  //A公司员工特有的操作,给A公司的员工进行装饰
                worker.doSomeWork();
      }
}

//水管工

class Plumber implements Worker{

    public void doSomeWork(){
            System.out.println("fix shui guan.");
     }

}

//木匠 

class Carpenter implements Worker{

        public void doSomeWork(){
 
            System.out.println("fix men chuang.");
    }
}

 

class Test34{

 public static void main(String args[]){
            Plumber plumber = new Plumber();
           AWorker aWorker = new AWorker(plumber);   //AWorker为装饰者,plumber为被装饰者,作为参数传递到装饰者当中
           aWorker.doSomeWork();

            Carpenter carpenter = new Carpenter();
            AWorker aWorker2 = new AWorker(carpenter);
           aWorker2.doSomeWork();

     }
}

D:\work\src>javac Worker.java

D:\work\src>javac Plumber.java

D:\work\src>javac Carpenter.java

D:\work\src>javac AWorker.java

D:\work\src>javac Test34.java

D:\work\src>java Test34
Hello.
fix shui guan.
Hello.
fix men chuang.

 

Java IO(三 装饰者模式) - 冷风 - 冷风的博客

 

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

节点流(被装饰者)是用来真正处理数据的,而处理流(装饰者)是用来装饰节点流的,为节点流添加新的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值