编辑:我已经收到了几个回答,它们在问题中已经提到了。我真正感兴趣的是寻找相关的参考资料。
我正在查看一个代码示例,它基本上遵循这种模式:
Map<String, List> getListsFromTheDB() {
Map<String, List> lists = new HashMap<String, List>();
//each list contains a different type of object
lists.put("xList", queryForListOfXItems());
lists.put("yList", queryForListOfYItems());
return lists;
}
void updateLists() {
Map<String, List> lists = getListsFromTheDB();
doSomethingWith(lists.get("xList"));
doSomethingWith(lists.get("yList"));
}
我认为这是一种反模式。程序员应该创建一个可以返回的类,像这样:
class Result {
private final List<X> xList;
private final List<Y> yList;
public Result(xList, yList) {
this.xList = xList;
this.yList = yList;
}
public List<X> getXList() { xList; }
public List<Y> getYList() { return yList; }
}
这样做会更加类型安全,避免过度泛化一个非常具体的问题,并且在运行时更不容易出错。
有没有人能指向任何权威的参考资料,说明应该避免这种模式?或者,如果这是一个好的模式,请给出理由。
doSomething
的输入是xList和yList。但是,如果你只想批量处理返回的列表而不需要引用每个单独的列表,那么返回一种Map/List/Set结构确实是有意义的。 - Strelok