问题描述
假设我有一个基类 User
,它包含所有必要的信息(登录名、姓名、邮件...)。派生自 Administrator
的 User
类可以创建新的和删除现有的 User
。
我还需要 3 个类:Manager
、Worker
和 Project
。 Manager
和 Worker
都从 User
派生,但它们中不需要额外的成员或方法使它们成为空类。
在视觉表示方面,如果我像这样将 Manager
和 Worker
聚合到 Project
,我发现这很容易理解:
问题是我还希望 Administrator
能够访问所有 Managers
的列表和 Workers
的列表。此外,Project
应该能够返回其 Manager
和 Worker
。在 C++ 中,要获得这样的列表,恐怕我会检查每个 User
的类类型以将其过滤掉。我觉得这不是正确的方法吗?
对此的解决方案可能不是创建Manager
,也不是创建Worker
类,而是添加一个名为occupation/designation 的User
属性,该属性将是一个字符串。然后过滤过程会变得更简单,成本也可能更低。
如果我走这条路线,我最终会得到不准确的图表,其中多个 User
聚合到 Project
(或多个项目)并且无法区分经理和工人.
有人可以对这个主题有所了解,并提供一些图形示例吗?