编程模式 - 示例研究

时间:2012-05-08 19:50:23

标签: java design-patterns

我的测试中有这个问题:

  

这是什么样的编程/设计模式:

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

对不起,我很抱歉,编程模式的定义对我来说不清楚,我不知道如何正确回答这个问题。

2 个答案:

答案 0 :(得分:10)

这是Decorator Pattern的一个例子。

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

  

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

在您的示例中,您正在为FileReader添加缓冲,这提供了比常规的,未缓冲的FileReader更高效的阅读。

答案 1 :(得分:1)

这是Decorator模式。来自设计模式书:

  

意图:动态地将附加职责附加到对象。   装饰器为子类化提供了灵活的替代扩展   功能

     

...

     

适用性:使用装饰器

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

如果是BufferedReader,它会将缓冲功能附加到FileReader

如果您想了解更多有关模式的信息,我建议您阅读本书(或更轻松的“Head First Patterns”)。 另外,关于JDK中的模式使用情况,有很棒的answer - 很酷的东西!