DogActivityType
我有 2 个已经定义的类,我们将它们称为HorseActivityType
. 它们具有相同的字段、相同的方法,但它们写入数据库中的 2 个不同的表,当然,它们的名称也不同。
我有一个函数,其中一个类的所有业务规则都已经工作,而另一个类使用相同的业务规则。
限制:
- 我必须使用这两个类,因为它们在项目的其他部分中使用
- 我无法创建一个类并添加另一列(字段)来区分这两种类型的类。
- 我无法编辑这两个类的源代码。
. 这是我的简化版代码:
public doAllCalculations(){
// retrieve collection
foreach (DogActivityType activity in allActivities){
// a lot of code here
// more code...
createMoreOf(activity); // this is overloaded since it needs to know which DB to write to
}
}
// using overload for same function name
private createMoreOf(DogActivityType doggyActivity){
/// do some specific when it is a dog
}
private createMoreOf(HorseActivityType horse){
/// do some specific when it is a horse
}
现在,问题是:doAllCalculations()
非常广泛和复杂,在发展过程中可能会发生变化。我不想有 2 个不同的函数 ( doAllCalculationsDOG()
and doAllCalculationsHORSE()
) 来进行相同的分析,只是因为我需要一个用于the 类Dog
,另一个用于Horse
该类。有一天,项目中的某个人可能会忘记更新这两个功能或任何其他糟糕的情况......
所以,我想对这两个类使用相同的功能。所以如果我在大计算函数中编辑一个规则,我会知道它对两个类都有效。我想我最终会得到这样的结果:
public class AnimalActityType {
}
public doAllCalculations(){
// retrieve collection
foreach (AnimalActivityType activity in allActivities){
// a lot of code here
// more code...
createMoreOf(activity);
}
}
AnimalActityType
会模拟一个抽象的父级,我称之为反向多态......但是 DogActityType 和 HorseActityType 是如何知道这个父级的呢?我可以强迫父母吗?是否可以?有任何想法吗?