在我的代码中我有一个 List<Person>
.此列表中对象的属性可能包括以下内容:
- 身份证
- 名字
- 姓氏
在我的应用程序的一部分中,我将允许用户使用这三个值的任意组合来搜索特定的人。目前,我有一个 switch 语句,它只检查填写了哪些字段,并调用为该值组合指定的方法。
即:
switch typeOfSearch
if 0, lookById()
if 1, lookByIdAndName()
if 2, lookByFirstName()
等等。实际上有 7 种不同的类型。
这让我对每个语句都有一个方法。这是做到这一点的“好”方法吗?有没有办法让我使用参数或某种“过滤器”?这可能没有什么不同,但我正在用 Java 编写代码。
最佳答案
您可以使用 map 和界面做一些更优雅的事情。例如,试试这个,
interface LookUp{
lookUpBy(HttpRequest req);
}
Map<Integer, LookUp> map = new HashMap<Integer, LookUp>();
map.put(0, new LookUpById());
map.put(1, new LookUpByIdAndName());
...
在你的controller中然后你可以做
int type = Integer.parseInt(request.getParameter(type));
Person person = map.get(type).lookUpBy(request);
这样就可以用 map 快速查找方法了。当然你也可以使用长开关,但我觉得这样更易于管理。
关于java - 创建方法过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587024/