我正在编写一个GraphQL查询API,它将filter作为输入。基于过滤器,我需要调用不同的对象函数。
API函数签名
public GrantsConnection fetch(GrantFilter filter)
GrantFilter具有以下属性。
public class GrantFilter {
private Boolean isPrimary;
private String profileId;
private String entityId;
}
过滤器可以是一个或两个或所有属性的组合。
我的方法
public GrantConnection(GrantFilter filter) {
if(filter.getIsPrimary() != null
&& filter.getProfileId() == null
&& filter.getEntityId() == null) {
// invoke a function
} else if(filter.getIsPrimary() == null
&& filter.getProfileId() != null
&& filter.getEntityId() == null) {
// invoke different function
} else if(filter.getIsPrimary() == null
&& filter.getProfileId() == null
&& filter.getEntityId() != null
// invoke 3rd function
}
// other combinations
}
从条件调用的所有函数都是实现相同接口的对象。Spring写这篇文章最好的方法是什么?
1条答案
按热度按时间kmynzznz1#
我将创建一个实现
Predicate<GrantFilter>
的自定义Filter
类现在,我将保留一个
pairs
和Filter
的集合,以及一个将GrantFilter
转换为GrantConnection
的函数(这将允许以声明的方式创建显示在何种情况下需要调用哪个函数):PS:请随意重命名一些东西或使代码更简洁一点。