4

テストで次の質問がありました。

これはどのようなプログラミング/設計パターンですか:

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

お手数をおかけして申し訳ありませんが、プログラミング パターンの定義が不明確であり、この質問に正しく答える方法がわかりません。

4

2 に答える 2

10

これはデコレータパターンの例です。

リンクされたウィキペディアの記事が述べているように:

デコレータパターンは、ビヘイビアを既存のオブジェクトに動的に追加できるようにするデザインパターンです。

この例では、にバッファリングを追加しています。FileReaderこれにより、通常のバッファリングされていないのよりも効率的な読み取りが可能になりますFileReader

于 2012-05-08T19:52:53.527 に答える
1

これがDecoratorパターンです。デザインパターンの本から:

意図: オブジェクトに動的に責任を追加します。デコレーターは、機能を拡張するためのサブクラス化に代わる柔軟な手段を提供します

...

適用範囲: デコレータを使用

  • つまり、他のオブジェクトに影響を与えることなく、個々のオブジェクトに動的かつ透過的に責任を追加します。
  • 取り消すことができる責任のために。
  • サブクラス化による拡張が実用的でない場合。場合によっては、多数の独立した拡張が可能であり、すべての組み合わせをサポートするためにサブクラスが急増することがあります。または、クラス定義が非表示になっているか、サブクラス化できない場合があります。

の場合、BufferedReaderにバッファリング機能を付けFileReaderます。

パターンについて詳しく知りたい場合は、この本 (または、より軽い「Head First Patterns」) を読むことをお勧めします。さらに、 JDK内でのパターンの使用についてSOに素晴らしい答えがあります-非常にクールなものです!

于 2012-05-08T19:59:55.527 に答える