Shm*_*opy 2 c# code-duplication
我有2个方法具有完全相同的逻辑:
Dog RunDog()
{
// a LOT of businees logic
return DogMethod(dogParams);
}
Employee RunEmployee()
{
// the exact same logic from above
return EmployeeMethod(employeeParams (can be easily converted to/from dogParams));
}
Run Code Online (Sandbox Code Playgroud)
是否有一个通用的设计模式来帮助我避免代码重复?
也许是这样的:
T RunT()
{
// Logic...
// Invoke DogMethod/EmployeeMethod depending on T and construct the params accodringly
}
Run Code Online (Sandbox Code Playgroud)
我选择Dog/Employee来强调在两者之间进行转换没有简单的方法.
如果两个方法返回不同的类型,那么它们会做不同的事情,尽管它们在内部使用相同的业务逻辑 所以我会提取常用的业务逻辑
class Running
{
public Dog RunDog()
{
var dogParams = GetParams();
return DogMethod(dogParams);
}
public Employee RunEmployee()
{
var dogParams = GetParams();
var employeeParams = ConvertParams(dogParams);
return EmployeeMethod(employeeParams);
}
private DogParams GetParams()
{
// a LOT of business logic
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |