智能地使用bufferReader

时间:2012-04-18 19:55:43

标签: java design-patterns

我在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;
}

所有缓冲区都来自同一文本文件。这看起来有点难看,我怎么会让它有点漂亮。我想在方法中传递缓冲区一次,或者是否有任何方法来传递文件路径并在方法本身内创建缓冲区。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分: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