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 对象数组。

作为旁注,如果您不需要任何底层具体对象的功能,则最好使用对象的接口而不是其具体实现。这允许您在需要时将实现交换为不同的东西,而无需更改您的方法与代码用户的合同。

例如,而不是写:

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 回答