装饰者模式:用于对类扩展功能
例如:对FileReader这个类的close方法进行扩展:
- 继承(不推荐,代码耦合度太高。不利于项目的扩展。)
- 装饰者模式.
- 装饰者模式中要求:装饰者中含有被装饰者的引用.
- 装饰者模式中要求:装饰者和被装饰者应该实现同一个类型.
Reader 公共父类或共同实现的接口
1 2 3 4
| public abstract class Reader { public abstract void close(); }
|
FileReader 被装饰者
1 2 3 4 5 6 7
| public class FileReader extends Reader { public void close() { System.out.println("FileReader closed!"); } }
|
BufferedReader 装饰者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class BufferedReader extends Reader { Reader reader; BufferedReader(Reader reader) { this.reader = reader; } public void close() { System.out.println("扩展代码1"); reader.close(); System.out.println("扩展代码2"); } }
|
测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class Test02 { public static void main(String[] args) {
BufferedReader br = new BufferedReader(new FileReader()); br.close(); } }
|