我在测试中遇到了这个问题:
这是一种什么样的编程/设计模式:
FileReader fr = new FileReader("file.txt"); BufferedReader bf = new BufferedReader(fr);
很抱歉给您带来麻烦,但编程模式的定义对我来说还不清楚,我不知道如何正确回答这个问题。
我在测试中遇到了这个问题:
这是一种什么样的编程/设计模式:
FileReader fr = new FileReader("file.txt"); BufferedReader bf = new BufferedReader(fr);
很抱歉给您带来麻烦,但编程模式的定义对我来说还不清楚,我不知道如何正确回答这个问题。
这是装饰者模式的一个例子。
正如链接的维基百科文章所述:
装饰器模式是一种允许将行为动态添加到现有对象的设计模式。
在您的示例中,您正在向 a 添加缓冲FileReader
,这比常规的未缓冲 提供更有效的读取FileReader
。
这是Decorator
模式。来自设计模式书:
意图:动态地为对象附加额外的职责。装饰器为扩展功能提供了一种灵活的替代子类的方法
...
适用性:使用装饰器
- 动态和透明地向单个对象添加职责,即不影响其他对象。
- 对于可以撤销的责任。
- 当通过子类化扩展不切实际时。有时大量的独立扩展是可能的,并且会产生大量的子类来支持每种组合。或者一个类定义可能被隐藏或不能用于子类化。
在 的情况下BufferedReader
,它将缓冲功能附加到FileReader
.
如果你想了解更多关于模式的知识,我推荐阅读这本书(或者更轻松的“Head First Patterns”)。此外,关于 JDK 中的模式使用的 SO 上有很好的答案——非常酷的东西!