我有个陈述。我知道组合和继承的起起落落,但我无法意识到,在给定的情况下,什么是最好的选择。
一家软件公司正在为一所大学开发一个网站,该网站使用多个类之间的继承。课程包括人、老师、学生、GradStudent、GradTeachAsst。
出于某些原因,项目设计团队决定不对GradTeachAsst类使用多重继承,并给出了两个替代方案。一种是使用组合,另一种是单继承与组合相结合。作为一名软件开发人员,您将选择哪个选项?用充分的理由证明你的回答是正确的。

在我看来,最好的方案是选择Composition。但我并没有想到原因。有人能解释清楚原因吗?
发布于 2017-07-27 16:55:17
正如您所指出的,继承解决方案需要引入很少有价值的层次结构。特别是使用多重继承,因为某人既是教师又是研究生,这是IMHO过于复杂的。如果老师不是一个研究生,而是一个普通的学生--这需要另一个班级;这意味着在一个更实质性的领域,结果会是班级的爆炸式增长。
从持久化的角度来看模型,这种继承使持久性变得复杂,同时也提供了很少或根本没有价值。持久化模型可能简单且易于使用组合。那么,为什么不在对象模型中也遵循这一点呢?
在这里,我广泛地支持学生与人,教师与人,而不仅仅是研究生学生教师使用作文。有了作文,就不需要额外的课程来塑造一个具有教学作用的人,也不需要选修课程。要明确的是,为学生和教师选择继承是很奇怪的,但是切换到GradTeachAssist的组合是很奇怪的;而对所有的学生和老师都使用组合是很自然的。
然而从逻辑的角度来看,从根本上说,我们是一个人,但我们所扮演的角色,例如学生或教师,是短暂的;这些不是永久的,而是一种关系,因此构图似乎更合适。
https://softwareengineering.stackexchange.com/questions/354600
复制相似问题