Fre*_*Pym 5 java search api-design
我正在设计一个包装新闻搜索引擎的装饰器类,因此我们可以将这个类与一个库一起发送给其他团队使用.
这个类的公开接口是Java风格的接口,它需要很多参数,然后这个装饰器将这些参数组装成搜索引擎的搜索文本.
我的方法如下:
public List<News> search(List<String> keywords, List<String> categories, List<String> authors, List<Location> locactions, List<LocalDate> dates, List<SortRule> sortRules, int offset, int limit);
Run Code Online (Sandbox Code Playgroud)
是的,我知道......这种方法看起来非常漫长,非常错误,并且很难用于客户端.
那么,我如何为这样的搜索功能设计更好的API呢?
您可以尝试编写一个包装类来应用规则过滤器,然后在当前类中获取此类的新对象.这样它会更加简单和清洁.
例如,
RuleFilters r = new RuleFilters();
r.addFilters(Type.Keywords, keywords);
r.addFilters(Type.Categories, categories);
r.addFilters(Type.Authors, authors);
Run Code Online (Sandbox Code Playgroud)
这Type
是一个枚举,其中包含不同规则过滤器{Categories, Authors, Keywords}
等的详细信息.
最后在您的主类:
public List<News> search(RuleFilters r) {
/* Do Something with the rule filters */
};
Run Code Online (Sandbox Code Playgroud)
接口:
List<News> search(RuleFilters r);
Run Code Online (Sandbox Code Playgroud)
注意: public
接口中不需要关键字.
如有效Java中所述,您可以考虑使用构建器模式。那将是一个很好的解决方案。
SearchParam search = new SearchParam.Builder(keywords).
categories(categories).authors(authors).location(loc1,loc2).build();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1549 次 |
最近记录: |