テストで次の質問がありました。
これはどのようなプログラミング/設計パターンですか:
FileReader fr = new FileReader("file.txt"); BufferedReader bf = new BufferedReader(fr);
お手数をおかけして申し訳ありませんが、プログラミング パターンの定義が不明確であり、この質問に正しく答える方法がわかりません。
テストで次の質問がありました。
これはどのようなプログラミング/設計パターンですか:
FileReader fr = new FileReader("file.txt"); BufferedReader bf = new BufferedReader(fr);
お手数をおかけして申し訳ありませんが、プログラミング パターンの定義が不明確であり、この質問に正しく答える方法がわかりません。
これはデコレータパターンの例です。
リンクされたウィキペディアの記事が述べているように:
デコレータパターンは、ビヘイビアを既存のオブジェクトに動的に追加できるようにするデザインパターンです。
この例では、にバッファリングを追加しています。FileReader
これにより、通常のバッファリングされていないのよりも効率的な読み取りが可能になりますFileReader
。
これがDecorator
パターンです。デザインパターンの本から:
意図: オブジェクトに動的に責任を追加します。デコレーターは、機能を拡張するためのサブクラス化に代わる柔軟な手段を提供します
...
適用範囲: デコレータを使用
- つまり、他のオブジェクトに影響を与えることなく、個々のオブジェクトに動的かつ透過的に責任を追加します。
- 取り消すことができる責任のために。
- サブクラス化による拡張が実用的でない場合。場合によっては、多数の独立した拡張が可能であり、すべての組み合わせをサポートするためにサブクラスが急増することがあります。または、クラス定義が非表示になっているか、サブクラス化できない場合があります。
の場合、BufferedReader
にバッファリング機能を付けFileReader
ます。
パターンについて詳しく知りたい場合は、この本 (または、より軽い「Head First Patterns」) を読むことをお勧めします。さらに、 JDK内でのパターンの使用についてSOに素晴らしい答えがあります-非常にクールなものです!