我有下面的工厂类,不知道这段代码能否以更好的方式实现。我很少看到关于spring工厂bean的讨论,但是找不到好的例子。
@service
public CustomerSearchFactory{
@Autowired
private CustomerSearchByID searchById;
@Autowired
private CustomerSearchByName searcyByName;
@Autowired
private CustomerSearchBySSN searchBySSN;
public CustomerSearch getInstance(Request param){
if (StringUtils.isNotBlank(param.getID()){
return searchById;
}else if (StringUtils.isNotBlank(param.getName()){
return searcyByName;
}else if (StringUtils.isNotBlank(param.getSSN()){
return searchBySSN;
}
}
}
@service
public CustomerSearchByID implements CustomerSearch{
@Autowired
private Service1 service1;
public Response search(Request request){
--
--
ReturnResponse rs = service1.performSearch(inputRequest);
--
return response;
}
}
@service
public CustomerSearchBySSN implements CustomerSearch{
@Autowired
private Service2 service2;
public Response search(Request request){
--
--
ReturnResponse rs = service2.performSSNSearch(inputRequest);
--enter code here`
return response;
}
}呼叫者代码:
CustomerSearch customerSearch= customerSearchFactory.getInstance(param)
response = customerSearch.search(request);我正在使用Spring3.1框架,并想知道这段代码是否可以优化。
发布于 2014-01-08 14:34:36
我建议每个搜索标准不要使用不同的CustomerSearch。
随着功能的发展,您可能需要一个CustomerSearch,它使用Customer来自的国家。
但是,如果您想结合部分名称在Country上搜索呢?
不久,您将将不同的搜索条件组合在一起,这将需要一个智能CustomerSearch bean。
https://codereview.stackexchange.com/questions/38802
复制相似问题