java - 创建方法过滤器

标签 java language-agnostic filter

在我的代码中我有一个 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/

相关文章:

swift - 如何从 JSON 中过滤多个值并将结果附加到 TableView Swift 4

javascript - 使用过滤器方法合并两个数组

javascript - 如何从必须通过测试的新数组中包含对象的数组返回特定​​值?

java - 正则表达式、地理坐标系值(秒)问题、Java

java - 从 Java 运行 PowerShell 加载第 3 方模块 - ResourceUnavailable : FileNotFoundException

Java String 对象 .Equals 未按预期工作

language-agnostic - 引用功能数据结构时使用哪个术语 : persistent or immutable?

java - 使用 GetPrimitiveArrayCritical 和 Get<PrimitiveType>ArrayRegion 之间的权衡是什么?

sql - 社交网站的 ORM 有意义吗?

algorithm - 计算旋转矩形中的最大内接矩形