0

Java のデザイン パターンに問題があります。私は次の方法を持っています

public HashMap<String, Integer> createFrequentVocabs(bufferedReader buffr1,bufferedReader buffr2,bufferedReader buffr3){
    BufferedReader = new BufferedReader(new FileReader(new File(file)));
    HashMap<String, Integer> hm1 = new HashMap<String, Integer>();
    HashMap<String, Integer> hm2 = new HashMap<String, Integer>();
    String strngArry = new String();
    hm1 = getValue1(buffr1);
    hm2 = getValue2(buffr2);
    strngArray = getValue3(buffr3);
    return hm;
}

すべてのバッファは同じテキスト ファイルからのものです。これは少し醜いように見えますが、どうすれば少し美しくなりますか。メソッドで一度バッファを渡したいのですが、ファイルパスを渡してメソッド自体の中にバッファを作成する方法はありますか。どんな種類の提案もいただければ幸いです。

4

1 に答える 1

1

このメソッドが何をすべきかは完全にはわかりません。さらに詳しく説明していただけますか?

ただし、このメソッドへのメソッド引数の数を減らし、内部で BufferedReaders を作成するだけの場合は、Path オブジェクトの配列を渡すことが 1 つの可能性です。

補足として、基になる具体的なオブジェクトの機能が必要ない場合は、具体的な実装よりもオブジェクトのインターフェイスを使用することをお勧めします。これにより、コードのユーザーに対するメソッドのコントラクトを変更することなく、必要に応じて実装を別のものに交換できます。

たとえば、次のように書くのではなく:

HashMap<String, Integer> hm1 = new HashMap<String, Integer>();

あなたは次のように書くでしょう:

Map<String, Integer> hm1 = new HashMap<String, Integer>();

または、Java 7 では:

Map<String, Integer> hm1 = new HashMap<>();

このトピックの詳細については、Josh Bloch による『Effective Java 』を読むことを強くお勧めします。

于 2012-04-18T20:07:54.470 に答える