【发布时间】:2016-09-12 09:43:39
【问题描述】:
我有两种逻辑完全相同的方法:
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 是为了强调没有简单的方法可以在两者之间进行转换。
【问题讨论】:
-
所以你的员工是狗? ;)
-
如果逻辑完全相同,您可以创建一个附加方法并在
RunDog()和RunEmployee()中调用它以避免冗余。 -
好吧,也许可以将您的业务逻辑与您的 Run 方法分离,看看您是否可以使用它来启动您的狗和员工?如果您有 RunDog 和 RunEmployee 的 2 个实用方法,但您的业务逻辑是相同的,那么您就可以了。如果您的狗和员工共享一个基接口或父类,这会变得容易得多,因为您可以将其添加到泛型类型中作为限制,例如
where T: IBaseDataType或类似的东西 -
@ThiefMaster - 没有 Shmoopy 只会像狗一样工作!! :P
标签: c# code-duplication