如何设计类之间的这种关系?

How to design this relationship between classes?

我最近有一个 object/class 设计问题。问题是这样的:

"You have a University and it has employees, which can be either Student or Teacher."

他们让我只设计员工关系,所以我做了一个简单的继承图

然后他问我如果Student可以是Teacher会怎样,它不能继承Employee和Teacher。我无法回答,所以他设计了一个具有 Role class.

的解决方案

另一个解决方案可能是使用装饰器模式?

我的第一个解决方案:

他对多重继承问题的解决方案

替代解决方案?

您如何看待这些方法?

谢谢

编辑:我在 YouTube 上找到了一段视频,他们在其中描述并解决了这个问题,他们使用了相同的基于角色的组合解决方案。 https://youtu.be/dYUZiJEy0JE?t=1252

这是一道弱题:"the employee can be either a Student or a Teacher"。他的解决方案允许没有任何角色的员工,除非 "employee" 对象的创建者强制要求员工必须是两个角色之一的不变性。大学不在了,他实际上让你的解决方案更好;也就是说,从 Employee 到 Student 或 Teacher 的不相交专业化。 This question is similar.

这看起来像是可以使用 Party-PartyRole 模式解决的典型情况。

使用从 Student/Teacher 到 Employee 的泛化有时会给您带来麻烦,因为现在您无法对 Students[=29 建模=] 不是 员工

此模式适用于各方可以参与的所有类型的角色。

您必须在 Employee class 上添加一个额外的约束,但是要表明 Employee 应该是教师或学生(显然这所大学没有行政、清洁、维护...... . 员工)

注意:这可能不是您的老师正在寻找的答案,但它是在现实世界中对这些事物进行建模的可用方法.