您的位置:首页 > 编程语言 > Java开发

Java装饰者模式

2016-12-28 23:03 288 查看
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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: