当返回类型不同时,我可以避免代码重复吗?

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来强调在两者之间进行转换没有简单的方法.

Ral*_*ing 5

如果两个方法返回不同的类型,那么它们会做不同的事情,尽管它们在内部使用相同的业务逻辑 所以我会提取常用的业务逻辑

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)