我有两种逻辑完全相同的方法:
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));
}
是否有通用的设计模式来帮助我避免代码重复?
也许是这样的:
T RunT()
{
// Logic...
// Invoke DogMethod/EmployeeMethod depending on T and construct the params accodringly
}
我选择 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
}
}
关于c# - 当返回类型不同时,我可以避免代码重复吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39447493/