我在类中有几个方法具有相同的逻辑,但我看不出如何避免重复?每个方法在内部调用另一个服务,但内部服务调用之前和之后的逻辑是相同的,请参阅下面的代码片段。
任何帮助表示赞赏!
非常感谢,
码
public List<Customer> GetCustomerDetail(int id)
{
_log.debug("xxx");
if(something)
{
_log.debug("yyy");
}
var results = _internalService.GetCustomer(id);
if(results == null)
{
_log.debug("no results");
}
return results;
}
public List<Customer> GetCompanyDetail(int id)
{
_log.debug("xxx");
if(something)
{
_log.debug("yyy");
}
var results = _internalService.GetCompany(id);
if(results == null)
{
_log.debug("no results");
}
return results;
}
...
答案 0 :(得分:5)
使用代表:
public List<Customer> GetCustomerDetail(int id)
{
return DoIt( () => _internalService.GetCustomer(id) );
}
public List<Customer> GetCompanyDetail(int id)
{
return DoIt( () => _internalService.GetCompany(id) );
}
private T DoIt<T>( Func<T> func )
{
_log.debug("xxx");
if(something)
{
_log.debug("yyy");
}
var results = func();
if(results == null)
{
_log.debug("no results");
}
return results;
}
答案 1 :(得分:0)
有几种选择,具体取决于复制密度: