是否可以将2个控制器类连接到1个边界类?

时间:2016-11-24 14:59:30

标签: uml class-diagram ecb-pattern

我正在做一个大学项目,我需要在学校注册系统中创建一个类图。在那里,我添加了Student类,registrationUI边界类和registrationController控制器类:

enter image description here

我创建了一个名为systemController的独立控制器类来执行其他任务,例如计算账单等...

我是否可以将systemController课程加入registrationUI课程。

1 个答案:

答案 0 :(得分:1)

ECB架构模式

了解ECB架构模式originates from the use case模型可能很有用:

  • 控制器代表用例(例如RegistrationControler用于用例"注册学生")。控制器链接到用例中涉及的所有entite(可以是几个,例如RegistrationStudentCourse
  • 边界将用例与相关的外部参与者联系起来(例如RegistrationUI为注册管理员提供用户界面,如果是自助服务系统则为学生提供用户界面。因此,几个边界可以链接到控制器(例如,如果涉及第二方参与者,例如第三方系统)。
  • 实体代表域对象(例如Student)。因此,实体可以链接到其他几个相关实体(例如RegistrationStudent的{​​{1}}记录

一致性检查

this articlethat article的底部,您会看到一个短矩阵,显示实体,控件和边界之间的可能关系。

根据这个逻辑,实体[永远不应该直接连接到边界。因此,CourseAccess之间的Student关系不是一个好主意(ECB is not MVC)。

一个边界和两个控制器?

如果您遵循Jacobson的OOSE将用例分解为边界和控制器的逻辑,或者如果应用基本step by step robustness analysis in a use case driven modeling方法,则您需要识别控制器(用例)并创建actor和用例之间每个链接的边界。乍一看,人们可以认为边界最多可以链接到一个控制器。

但是你还有"包括"用例或"扩展"用例。它们不直接连接到actor,至少在图形中没有明确说明。这意味着你可以很好地拥有一个与几个控制器相关的边界。在this tutorial中,您有一个非常好的ATM示例,其中包含一个边界和几个ATM事务。在上面的DDJ文章链接中,您还有一个类似的示例。

P.S。:就我个人而言,我不太确定你想用RegistrationUI实现什么。我建议你考虑一下它的作用和名称。看看它的内容,我可以想象它是systemController的一部分。我还可以想象它是一个调度员启动其他控制器。