IO流中的装饰者设计模式
缓冲流装饰者模式
package com.cloud.day4; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Reader; /* 装饰者设计模式:增强一个类的功能,而且还可以让这些装饰类互相装饰。 BufferedReader拓展了FileReader的功能。 BuferedWriter 拓展了FileWriter的功能。
需求1:编写一个类拓展BufferedReader的功能,增强readLine方法返回的字符串带有行号。 需求2:编写一个类拓展BufferedReader的功能,增强readLine方法返回的字符串带有分号。 需求3:编写一个类拓展BufferedReader的功能,增强readLine方法返回的字符串带有双引号。 需求4:编写一个类拓展BufferedReader的功能,增强readLine方法返回的字符串带有行号+ 分号。 需求5:编写一个类拓展BufferedReader的功能,增强readLine方法返回的字符串带有分号+ 双引号。 需求6:编写一个类拓展BufferedReader的功能,增强readLine方法返回的字符串带有双引号+ 行号。 需求7:编写一个类拓展BufferedReader的功能,增强readLine方法返回的字符串带有行号+ 分号+双引号。
----| Reader -----------| BufferedReader ---------------| BufferedLineNum 带行号 ---------------| BufferedSemi 带分号 ---------------| BufferedQuto 带双引 ---------------| 子类.. ---------------| 增强一个类的功能时候我们可以选择使用继承: 通过继承实现增强一个类的功能优点: 代码结构清晰,通俗易懂。 缺点:使用不灵活,会导致继承的体系过于庞大。 */ class BufferedLineNum extends BufferedReader{ int count = 1; public BufferedLineNum(Reader in){ super(in); } @Override public String readLine() throws IOException { String line = super.readLine();
|