3

DataOutputStreamはFileOutputStreamをラップできますが、なぜここで使用されているのかわかりません。

FileOutputStream fos = new FileOutputStream(args[0]);
DataOutputStream dos = new DataOutputStream(fos);
dos.writeByte('j');

fos.write('j');最後の行は、この状況でDataOutputStreamが追加するものと同じです。つまり、なぜそこにあるのですか?

4

1 に答える 1

9

Javaのストリームは、 Decoratorデザインパターンに従って定義されます。

これは、特定の機能(特定のストリームクラス内に実装されている)を別のストリームで構成できることを意味します。これにより、ストリームで実行できることをカスタマイズできます。あなたの特定の例では

  • aFileOutputStreamは、ファイルにマップされたストリームに書き込む機能を提供する具象コンポーネントです。
  • aDataOutputStreamは、別のデコレータまたはコンポーネントに接続された具象デコレータであり、基になるデコレーションチェーンに何があるかを気にすることなく、ストリームにプリミティブを書き込む方法を提供することで機能を拡張できます。
于 2012-05-30T15:21:23.660 に答える