JAVA io流(2) 节点流和处理流 装饰者模式!!!

来源:互联网 发布:ubuntu login进不去 编辑:程序博客网 时间:2024/06/10 06:02

BufferedReader 属于字符流

我们主要是使用里面的

public String readline()     //会读取一行数据 以字符串返回给我

throws IOException函数


现在用bufferedReader来写个装饰者模式的dome

package io.buffer;import java.io.BufferedReader;import java.io.FileReader;public class buffer {public static void main(String args []) {FileReader filereader = null;BufferedReader bufferedReader=null;//这里先声明两个引用try {filereader=new FileReader("d:/1.txt");bufferedReader=new BufferedReader(filereader);这里把filereader作为参数传入Bufferedreader,等于BufferReader装饰了前者String a=ull} catch (Exception e) {// TODO: handle exception System.out.println(e);}finally{try {bufferedReader.close();filereader.close();} catch (Exception e2) {// TODO: handle exceptionSystem.out.println(e2);}
}}}



为了更好理解装饰类的精髓;我们用一个worker的例子来解释

首先创造出一个worker的接口

package WORK;interface worker {abstract void dosomejob();}

再创造出两个子类,一个cleaner一个singer

分别实现worker接口

package WORK;public class singger implements worker{@Overridepublic void dosomejob() {// TODO Auto-generated method stubSystem.out.println("I am a singer!");System.out.println("singging!!!!!");}}

package WORK;public class cleaner implements worker{@Overridepublic void dosomejob() {// TODO Auto-generated method stubSystem.out.println("I am a cleaner!");System.out.println("cleaning!!!!");}}
然后我们创造一个A公司的员工实现worker

这里就是精髓,我们在Awroker的构造方法里面传入类型为worker的参数;

并加上A公司自己对员工的要求;

package WORK;public class Aworker implements worker{private worker worker;           //这里先引用一个worker对象public Aworker(worker worker) {// TODO Auto-generated constructor stubthis.worker=worker;}public void dosomejob() {// TODO Auto-generated method stubSystem.out.println("hello!I come from A company!");worker.dosomejob();}}
最后在text里面运行

package WORK;public class test {public static void  main(String args[]) {cleaner cleaner1=new cleaner();Aworker a1=new Aworker(cleaner1);//这里就是把cleaner1作为参数传入a1.dosomejob();}}




0 0
原创粉丝点击