Java 智能化利用缓冲读卡器

Java 智能化利用缓冲读卡器,java,design-patterns,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, I

我在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;
}
public HashMap createFrequentVocabs(bufferedReader buffr1、bufferedReader buffr2、bufferedReader buffr3){
BufferedReader=新的BufferedReader(新文件读取器(新文件));
HashMap hm1=新的HashMap();
HashMap hm2=新的HashMap();
String strngary=新字符串();
hm1=getValue1(buffr1);
hm2=getValue2(buffr2);
strngArray=getValue3(buffr3);
返回hm;
}

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

我不完全确定这种方法应该做什么。你能再详细说明一下吗

但是,如果您只想减少此方法的方法参数数量并在内部创建BufferedReader,那么一种可能是传递一个Path对象数组

作为旁注,如果您不需要任何底层具体对象的功能,那么最好在对象的具体实现上使用对象的接口。这允许您在需要时将实现替换为其他实现,而无需将方法的契约更改为代码用户

例如,不要写:

HashMap<String, Integer> hm1 = new HashMap<String, Integer>();
HashMap hm1=newhashmap();
你会写:

Map<String, Integer> hm1 = new HashMap<String, Integer>();
Map hm1=newhashmap();
或者,在Java 7中:

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

有关此主题的更多信息,我强烈建议阅读Josh Bloch的文章。

您始终可以将路径作为
字符串传递,并从中创建所需的IO结构。(假设您有
字符串
)是否可以一次读取整个文件,并返回包含解析结果的对象?基本上,在这种方法中,我读取一个文本文件,将其单词放入数组,计算同一文本文件中的单词,并将其放入哈希映射,然后,我使用这两个信息创建新的hashmap以返回频繁出现的单词。