【问题标题】:Is it possible to join 2 controller classes to 1 boundary class?是否可以将 2 个控制器类加入 1 个边界类?
【发布时间】:2017-04-08 22:34:43
【问题描述】:

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

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

我在问是否可以将systemController 课程与registrationUI 课程一起加入。

【问题讨论】:

  • 类将如何打包(部署)?作为一个exe文件?
  • 我上传了一张图片。希望清楚
  • 什么是SystemController?以这种方式命名一个类对读者/维护者没有帮助。

标签: uml class-diagram ecb-pattern


【解决方案1】:

ECB 架构模式

了解ECB architecture pattern 源自from the use case 模型可能很有用:

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

一致性检查

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

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

一个边界和两个控制器?

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

但是您也有“包含”用例或“扩展”用例。这些与演员没有直接联系,至少在图形中没有明确连接。这意味着您很可能拥有与多个控制器相关的一个边界。在this tutorial 中,您有一个非常好的 ATM 示例,其中包含一个边界和多个 ATM 交易。在上面的 DDJ 文章链接中,您也有一个类似的示例。

P.S.:就个人而言,我不太确定你想用systemController 实现什么。我建议你考虑一下它的作用和它的名字。查看它的内容,我可以想象它是RegistrationController 的一部分。顺便说一句,我也可以想象它是一个调度程序启动其他控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2011-07-20
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多