package com.zyf.day21.other;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
//BufferedReader是不是拓展了FileReader的功能
//BufferedWriter也是拓展了FileWriter的功能
//需求1:编写一个类扩展BufferedReader的功能,增强readLine方法返回的字符串带有行号
//需求2:编写一个类扩展BufferedReader的功能,增强readLine方法返回的字符串带有分号
//需求3:编写一个类扩展BufferedReader的功能,增强readLine方法返回的字符串带有双引号
//需求4:编写一个类扩展BufferedReader的功能,增强readLine方法返回的字符串带有 行号 +分号
//需求5:编写一个类扩展BufferedReader的功能,增强readLine方法返回的字符串带有 分号 +双引号
//需求6:编写一个类扩展BufferedReader的功能,增强readLine方法返回的字符串带有 行号 + 双引号
//需求7:编写一个类扩展BufferedReader的功能,增强readLine方法返回的字符串带有 行号 + 分号 + 双引号
class BufferedLineNum2 extends BufferedReader{
//在内部维护一个被装饰类的引用
BufferedReader bufferedReader;
int count = 1;
public BufferedLineNum2(BufferedReader bufferedReader){
super(bufferedReader);//注意:该语句没有任何作用,只不过是为了让代码不报错。
this.bufferedReader = bufferedReader;
}
public String readLine() throws IOException{
String line = bufferedReader.readLine();
if(line == null){
return null;
}
line = count + " " + line;
count++;
return line;
}
}
//带分号的缓冲输入字符流
class BufferedSemi2 extends BufferedReader{
//在内部维护一个被装饰类的引用
BufferedReader bufferedReader;
public BufferedSemi2(BufferedReader bufferedReader){
super(bufferedReader);
this.bufferedReader = bufferedReader;
}
public String readLine() throws IOException{
String line = bufferedReader.readLine();
if(line == null){
return null;
}
line = line + ";";
return line;
}
}
public class demo2 {
public static void main(String[] args) throws IOException {
File file = new File("c:\\a.txt");
FileReader fileReader = new FileReader(file);
//建立缓冲输入字符流
BufferedReader bufferedReader = new BufferedReader(fileReader);
BufferedLineNum2 bufferedLineNum = new BufferedLineNum2(bufferedReader);
//带分号 的缓冲输入字符流
BufferedSemi2 bufferedSemi2 = new BufferedSemi2(bufferedLineNum);
String line = null;
while((line = bufferedSemi2.readLine())!=null){
System.out.println(line);
}
}
}
Java装饰者模式
最新推荐文章于 2024-05-15 22:28:15 发布