【发布时间】:2019-09-16 20:17:56
【问题描述】:
我最近有一个对象/类设计问题。问题是这样的:
“你有一所大学,它有员工,可以是学生也可以是老师。”
他们让我只设计员工的关系,所以我做了一个简单的继承图
然后他问我如果 Student 可以成为 Teacher 会发生什么,它不能从 Employee 和 Teacher 继承。我无法回答,所以他设计了一个带有 Role 类的解决方案。
另一个解决方案可能是使用装饰器模式?
我的第一个解决方案:
他对多重继承问题的解决方案
替代解决方案?
您如何看待这些方法?
谢谢
编辑:我在 YouTube 上找到了一个视频,他们描述并解决了这个问题,他们使用了相同的基于角色的组合解决方案。 https://youtu.be/dYUZiJEy0JE?t=1252
【问题讨论】:
-
codereview.stackexchange.com 可能更适合您的问题,但您可能还需要为您创建的每个图表提供 代码。
-
这是一个弱问题:“员工可以是要么学生或教师”。他的解决方案允许没有任何角色的员工,除非员工必须是两个角色之一的不变量由“员工”对象的创建者强制执行。没有大学,他实际上使您的大学成为更好的解决方案;也就是说,从员工到学生或教师的不相交的专业化。 This question is similar.
-
如果我在面试时你在答案中放弃了设计模式,我不会这么看。当你想说服人们相信你的知识时,总是从第一原则开始,设计模式是现成的答案,除非明确要求,否则应该避免。
-
我的正确解决方案是this,因为问题的范围允许这样做。学生或老师只是一个人。如果用例是维护两者的注册表,则通过在实例化后将每个教师或学生添加到正确的“存储桶”中,此解决方案就可以正常工作。它还表明每个人对象都是相同的,无论他们添加到哪个桶。
-
@RWRkeSBZ 您的第一条评论实际上是正确答案。你应该这样发布。
标签: java oop design-patterns uml decorator