我的测试中有这个问题:
这是什么样的编程/设计模式:
FileReader fr = new FileReader("file.txt"); BufferedReader bf = new BufferedReader(fr);
对不起,我很抱歉,编程模式的定义对我来说不清楚,我不知道如何正确回答这个问题。
答案 0 :(得分:10)
这是Decorator Pattern的一个例子。
正如链接的维基百科文章所述:
装饰器模式是一种设计模式,允许动态地将行为添加到现有对象。
在您的示例中,您正在为FileReader
添加缓冲,这提供了比常规的,未缓冲的FileReader
更高效的阅读。
答案 1 :(得分:1)
这是Decorator
模式。来自设计模式书:
意图:动态地将附加职责附加到对象。 装饰器为子类化提供了灵活的替代扩展 功能
...
适用性:使用装饰器
- 动态且透明地向各个对象添加职责,即不影响其他对象。
- 可以撤回的责任。
- 通过子类扩展是不切实际的。有时候,大量的独立扩展是可能的,并且会产生一个 爆发子类以支持每个组合。或者是一堂课 定义可能隐藏或不可用于子类化。
如果是BufferedReader
,它会将缓冲功能附加到FileReader
。
如果您想了解更多有关模式的信息,我建议您阅读本书(或更轻松的“Head First Patterns”)。 另外,关于JDK中的模式使用情况,有很棒的answer - 很酷的东西!