I/O<三>

前言:我是mars老师的忠实崇拜者,很多总结的知识基本源自mars老师

一,处理流的使用:

BufferedReader:  字符输入处理流

public String readLine() throws IOException :一次性读取一行,结尾处返回null

(1)生成BufferedReader对象的方法
FileReader  fileReader  = new FileReader(" f:/work/from.txt");

BufferedReader   in   =  new BufferedReader (fileReader);


实例:

//导入包
import java.io.*;


class BufferedTest{
public static void main(String args []){
//声明FileReader,BufferedReader引用
FileReader fileReader = null;
BufferedReader bufferedReader = null;
try{
//生成FileReader,BufferedReader对象
fileReader = new FileReader("f:/work/from.txt");
bufferedReader = new BufferedReader(fileReader);
String line = null;
while(true){
line = bufferedReader.readLine();
if(line == null){
break;   //当读到末尾,即结束时,BufferedReader.readLine()方法会返回null
}
System.out.println(line);
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
//关闭流
fileReader.close();
bufferedReader.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
}


输出结果:


F:\work>javac BufferedTest.java
F:\work>java BufferedTest
张三    18    男
李四    30    男
貂蝉    22      女
吕布    25      男



二,“装饰者”模式(Decorator)


图:如某些公司a,b,的木匠和水管工到客户维修时,都先说出他们自己公司的敬语或者礼貌性动作:

如A公司:要求公司所有职员到客户家时需要说:你好

而B公司:要求公司所有职员到客户家里时需要先带脚套,防止弄脏客户家里

那么此题该怎么设计呢?继承??

那么就需要用:装饰者模式了




这个例子帮助你理解上图:

定义:接口Worker,含抽象方法doSomeWork()

两个类:水管工,木匠:只是实现Worker,复写抽象方法doSomeWork()

两个类:A,B公司职员:实现Worker接口,复写抽象方法doSomeWork(),再增加方法:使该复写的doSomeWork能根据传入的参数

实现水管或者木匠的功能,再增加自己公司的要求



具体:

//定义一个Worker接口
interface Worker{
//定义一个抽象方法
public void doSomeWork();
}


//定义Carpenter类实现Worker接口,复写其抽象方法
class Carpenter implements Worker{
public void doSomeWork(){
System.out.println("我要做土木");
}
}


/定义一个修水管类Plumber实现Worker接口
class Plumber implements Worker{
public void doSomeWork(){
System.out.println("我要修水管");
}
}


//定义一个A公司的类,实现Worker接口,A公司要求职员在进入客户家里前需问候
class AWorker implements Worker{
private Worker worker;
public AWorker(Worker worker){
this.worker = worker;
}

//重写Worker的抽象方法
public void doSomeWork(){
System.out.println("你好!");
worker.doSomeWork();
}
}

//定义B公司类,B公司要求职员需带脚套进入客户家里
class BWorker implements Worker{
private Worker worker;
public BWorker(Worker worker){
this.worker = worker;

}

//重写Worker的抽象方法
public void doSomeWork(){
System.out.println("我要先戴脚套");
worker.doSomeWork();
}
}


//测试类
class Test{
public static void main(String args []){
//A公司的两种员工
Plumber plumber = new Plumber();
AWorker aWorker = new AWorker(plumber);
aWorker.doSomeWork();

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

//B公司
//Plumber plumber = new Plumber();
BWorker bWorker = new BWorker(plumber);
bWorker.doSomeWork();

//Carpenter carpenter = new Carpenter();
BWorker bWorker2 = new BWorker(carpenter);
bWorker2.doSomeWork();


}
}


输出结果:

F:\work>java Test
你好!
我要修水管
你好!
我要做土木
我要先戴脚套
我要修水管
我要先戴脚套
我要做土木





你可能感兴趣的:(I/O<三>)