不要向上层暴露本层以及所依赖的接口细节
h1.背景
在攻略全文搜索中,搜索的接口很丰富,并且将来可能会增加更多的需求。搜索业务类提供的接口既要能满足将来的扩展,
又不能暴露底层的细节,还要避免功能组合带来接口的膨胀。
h1.设计方法
搜索接口的依赖关系,如下图:
前端控制器 ----> 搜索业务方法 --> QP搜索API
QP主要需要一下参数控制搜索条件:
普通的: key=key
指定字段搜索: search_in=field
按照月份过滤: travelmonths=month
飘红: hl=true,hl.fl=highlightFields,
hl.simple.pre=飘红开始标签
hl.simple.post=飘红结束标签
h2.不好的设计1
如果Service层像控制器层提供一个functionParams,让Controller根据
不同的情景设置不同的参数进行搜索:
SearchFunction sf = new SearchFunction();sf.withOnlyUserName().withMonthFilter(1).withDefaultHighlight();SearchBookBean searchBean = service.searchBooks("keyword", sf);