如何避免重复代码(设计模式)

Jam*_*mie 0 c# design-patterns

我在类中有几个具有相同逻辑的方法,但我看不出如何避免重复?每个方法在内部调用另一个服务,但内部服务调用之前和之后的逻辑是相同的,请参阅下面的代码片段.

任何帮助赞赏!

非常感谢,

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;
}

...
Run Code Online (Sandbox Code Playgroud)

小智 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;
}
Run Code Online (Sandbox Code Playgroud)