前言:我是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
你好!
我要修水管
你好!
我要做土木
我要先戴脚套
我要修水管
我要先戴脚套
我要做土木