首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为包含创建包含属性组合的对象的系统提供类关系图?

如何为包含创建包含属性组合的对象的系统提供类关系图?
EN

Software Engineering用户
提问于 2020-02-09 06:59:23
回答 1查看 1.5K关注 0票数 3

我正在设计一个包含组织层次管理的系统。系统中有四个角色,即用户、管理员、经理和采购主管:

我试图让每个组织的管理员通过使用系统中预定义的任务和权限创建新的角色来创建自己的层次结构。

例如,管理员可能会在用户和采购主管之间添加一个名为“市场调研主管”的用户。管理员将分配这个新的用户任务,比如批准在系统中预定义的购买请求。

我正试图为这个系统准备一个类图,我不知道如何表示要创建的新角色。任何帮助都是非常感谢的。提前谢谢你。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2020-02-09 12:55:21

您面临的问题是合并了用户的概念和角色的概念。因此,如果同一个人在几个任务中担任采购主管,该人将有几个不相关的对象。

向前迈出的第一步将是合理地将关切问题分开,例如:

正如您所看到的,我将您最初的“用户”重命名为"Contributor“,以避免在特定角色和更一般的概念之间的混淆(例如,您有addUser(),但没有addManager()addHeadOfProcurement())。

这种设计增加了灵活性,但是您的应用程序将有机会强制执行一些约束(例如,如果审计员希望您执行某些职责分离)。

尽管如此,这种设计仍然依赖于预定义的角色。管理员不能创建新角色,而只能重用类模型中可用的角色。

如果您需要更高级别的灵活性,以便您的管理员可以创建新角色,您可以:

  • 或者对角色采用实体-组件-系统设计。它意味着使用组件的组合而不是继承。组件将是个人的责任或行为,如查看投标,贡献与内容,批准某事,重置批准等。
  • 或者将角色定义为子角色的复合,除非有一些预先定义的叶角色,这将是任务最基本的职责。

当然,这种额外的灵活性将增加另一层复杂性。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/404895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档