我正在用Java开发一个类项目,并且具有以下设计规范。
我有一个科学家类和一个ABCFundingApplication类(ABC是为科学家提供研究经费的机构)。这位科学家具有某些属性,例如他的用户名,密码,已发表的论文数量,过去获得的资金等。
ABCFundingApplication类包含一组类型科学家,这些类型科学家包含科学家对象。 ABCFundingApplication允许科学家对象的“创建”,还可以更新现有科学家对象的配置文件。
现在它说,ABC部门通过使用公司内部的一些程序来计算科学家是否获得资金(在此插入资金算法)。
规格表中说我们要在科学家类的方法中包括该funding_decision算法,我的问题是为什么我们不能将其包括在ABCFundingApplication类中,而只是检查科学家数组中是否有特定的科学家对象,是否/她将获得资助吗?我认为这将是更清洁的实现,不是吗?
最佳答案
从某种意义上说,我能理解为什么规格表说要在科学家类中包括funding_decision
。这就像将“ Throw”方法放在“ Dice”对象上一样。同样,由于ABCFundingApplication
不仅仅是供资机构,它还可以创建和更新资金。
但是我更喜欢将方法放在ABCFunding
类中,该类将代表主体,但不会创建或更新科学家。
它将扩展Funding接口,因此,如果出现DEFFunding
类,则可以为每个资金主体覆盖determineFunding
方法。