编程模式 - 示例研究

4

我在我的考试中遇到了这个问题:

What kind of programming / design pattern is this:

FileReader fr = new FileReader("file.txt");
BufferedReader bf = new BufferedReader(fr);

非常抱歉给您带来麻烦,但是对于编程模式的定义我不是很清楚,不知道如何正确回答这个问题。


3
我相信他们正在寻找装饰器模式。 - James Montagne
2个回答

10

这是“装饰器模式”(Decorator Pattern)的一个示例。

正如链接到的维基百科文章所述:

装饰器模式是一种设计模式,允许在现有对象上动态地添加行为。

在您的示例中,您正在向FileReader添加缓冲区,提供比常规未缓冲的FileReader更高效的读取。


1

这是装饰器模式。来自设计模式一书:

意图:动态地将附加责任附加到对象上。 装饰器为扩展功能提供了一种灵活的替代方案,而不是通过子类化。

...

适用性:使用装饰器

  • 动态透明地向单个对象添加责任,即不影响其他对象。
  • 对于可以撤回的职责。
  • 当通过子类扩展是不切实际的时候。有时可能存在大量独立扩展,并且会产生支持每个组合的子类爆炸。或者类定义可能被隐藏或无法进行子类化。

BufferedReader的情况下,它将缓冲功能附加到FileReader

如果您想了解更多关于模式的信息,我建议阅读这本书(或更轻松的“Head First Patterns”)。此外,SO上有一个关于JDK内部使用模式的精彩answer--非常棒!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接