装饰器模式

class BufferedReadLineNum1 extends BufferedReader{
//内部维护的被装饰者类
BufferedReader bufferedReader;
int count = 1;
public BufferedReadLineNum1(BufferedReader read){
super(read);
this.bufferedReader = read;
}
//开始拓展功能
public String readLine()throws IOException{
String content = bufferedReader.readLine();
if(content == null){
return null;
}
content = count + " " +content;
count++;
return content;
}
}

//带分号
class BufferedReadLineSemi1 extends BufferedReader{
BufferedReader bufferedReader;
public BufferedReadLineSemi1(BufferedReader read){
super(read);
this.bufferedReader = read;
}
//开始拓展功能
public String readLine()throws IOException{
String content = bufferedReader.readLine();
if(content == null){
return null;
}
return content+";";
}
}
//带引号
class BufferReaderLineMark1 extends BufferedReader{
//1.内部需要一个被装饰类的应用
BufferedReader bufferedReader;
public BufferReaderLineMark1(BufferedReader read){
super(read);
this.bufferedReader = read;
}
//重写
public String readLine()throws IOException{
String content = bufferedReader.readLine();
if(content == null){
return null;
}
return """+content+""";
}
}
public class Demo2 {


public static void main(String[] args) throws IOException {

//1.开启通道
FileReader reader = new FileReader("C:\zmy\test.txt");
//2.创建缓冲流
BufferedReader bufferedReader = new BufferedReader(reader);

//3.创建带引号
BufferReaderLineMark1 lineMark1 = new BufferReaderLineMark1(bufferedReader);

//3.创建带行号
BufferedReadLineNum1 lineNum1 = new BufferedReadLineNum1(lineMark1);

//3.创建带分号
BufferedReadLineSemi1 lineSemi1 = new BufferedReadLineSemi1(lineNum1);

//3.创建带引号
//BufferReaderLineMark1 lineMark1 = new BufferReaderLineMark1(lineSemi1);

//4.读取数据
String content = null;
while((content = lineSemi1.readLine()) != null){
System.out.println(content);
}

//关闭
lineSemi1.close();
}

}

原文地址:https://www.cnblogs.com/future-zmy/p/6144383.html