我有一组Individual
s的第一:一组学生起初只有一个名字。从他们的第一次考试中,他们将有名字和成绩。如何设计这是一个简单的方法?
class Individual {
double characteristics[];
abstract double CalculateValue();
...
}
每个人都有一组特征。这些特性将通过我的媒体库的用户通过继承来实现:
class MyIndividualABC : Individual {
public MyIndividualABC() {
characteristics = new double[2];
characteristics[0] = 123;
characteristics[1] = 456;
}
public override double CalculateValue() {
return characteristics[0]/characteristics[1]; //for example
}
}
我会再带他们,并给他们每个人的得分(基于其数值)。我会称之为迭代。
class EvaluatedIndividual {
double value;
double score; //score was calculated based on value
}
从迭代2和超越,我将永远具有EvaluatedIndividual
类型的手的对象。但第一次,我将不得不用Individual
类型的对象来引导。
我不希望有治疗的第一次迭代中比其他的人以不同的方式。我应该如何处理这个问题?
打个比方将有一个班的学生。在第一次考试之前,你只需知道他们的名字,从第一次考试开始,你的名字和他们考试的平均分数都将达到那一刻。
我设计了3点不同的方式来处理这个问题:
我会对我的程序
Start()
方法,然后一个Iteration()
。Start()
需要Individual[]
,而Iteration()
需要EvaluatedIndividual[]
。哈克,但会创造奇迹。如果没有更好的出现,将使用这个。从Individual
EvaluatedIndividual
继承。这看起来干净,但我也不太清楚这件事,因为我想Individual
是一个界面,我的想法是让我的图书馆/框架的客户端从它继承并定义了一套方法/字段上Individual
如他所愿(Individual
可能有多个值,例如计算value
时会考虑在内)。如果我遵循这种方法,我不得不让他也实现一个类EvaluatedIndividual
。个别由值,形成了两个
evaluation
和wasEvaluated
。起初wasEvaluated是错误的,所以任何收集value
的尝试都会抛出异常。我不特别喜欢这个,但我不知道为什么。
你怎么接近这个?这可能是一个很常见的模式,但恐怕我不知道这种情况:(
感谢
你的意思是,在考试之后,“个人”的一个实例变成了“EvaluatedIndividual”?世界真的在变化很快...... – 2010-11-23 07:16:19