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