角色而不是继承——许多未使用的字段可以吗?

Roles instead of inheritance -- are many unused fields okay?

很多情况都存在于现实生活中,例如您有用户和管理员。与其让 Admin 成为自己的 class 继承自 User,不如让 User 和 Admin 成为一个角色。 (我认为有更好的例子。)但我的问题是,管理员可能有很多其他字段,比如它可以访问的系统列表。看起来如果您选择使用角色,您将拥有包含许多空字段的用户对象,如果角色设置为 Admin,这些空字段只会是非空的。这样可以吗?还有比使用角色更好的实现方式吗? 编辑: 建议的一个想法:使角色不是枚举,而是 class ,其中包含角色独有的字段。这听起来合理吗?

通常,对象中未使用的字段指向对象分解问题。通常的重构解决方案是将这些字段推送到使用它们的对象中,在您的示例中为 roles,因此首先使它们成为 class 对象,而不仅仅是标识符。