2

同じロジックを持つが異なるクラスを使用するメソッドをリファクタリングする最良の方法は何ですか (Java の場合)? まあ言ってみれば

Method1(FileInputStream obj, OutputStream o){
  //stuff
  while(something){
    //---
    //some code
    //---
    obj.read();
    //---
    //some code
    //---
    o.write(..);
    //code
  }
  //code
}

そして、私は持っています

Method2(InputStreamReader obj, OutputStreamWriter os){
  //stuff
  while(something){
    //---
    //some code
    //---
    obj.read(..);
    //---
    //some code
    //---
    os.write();
    //code
  }
  //code
}

1 つの方法はバイナリ ファイルを処理し、別の方法はテキストを処理します。理想的には、読み取り-プロセス-書き込みを行い、特定の情報をすべて非表示にすることです

4

2 に答える 2

2

最善の方法は、正しいインターフェースを使用することです。

void method2(Reader obj, Writer os){
   // code...   
}

次に、このように使用しますInputStreams

method2(new InputStreamReader(fileInputStream), new OutputStreamWriter(outputstream));

なぜこれが良いのですか?

メソッドの動作方法を抽象化しているため、これは優れています。Readerまたはに準拠している限り、実装が何であるかは気にしないと言っていますWriter。したがって、 を に変更するのはユーザーの責任InputStreamですReaderあなたのものではありません。その中で例外がスローされた場合、それをキャッチする必要はありません。クライアントコードでスローされます。これは重要な注意事項です。

于 2012-09-05T17:58:06.917 に答える
0

同じものを読み書きすることはできないため、名前以外に共通点はありません。それらを共通にする唯一の方法は、バイナリとテキストをバイナリとして記述することです。つまり、最終的にはすべてバイナリになります。

于 2012-09-05T17:47:15.180 に答える