oop - 如何在 UML 中正确建模 MVC 类图?

标签 oop model-view-controller uml

我正在用 UML 建模电影票系统。我需要使用MVC,所以我必须有一个模型;它控制数据库中可用的票证,一个 View ;要求客户提供一些数据和 Controller ;它控制一切,是模型和 View 之间的路径。问题是,我对这个系统进行了这样的建模:

MVC Class diagram

但是我的老师说我不能在 Controller 与 View 和模型之间使用组合关系。但我不明白为什么,因为如果我在 Controller 内初始化模型和 View (这样它就可以控制一切),当 Controller 死亡时,(模型和 View )都将不再存在。我的老师说我必须使用关联关系。你能告诉我什么是正确的关系以及为什么吗?

最佳答案

MVC 模式中的 Controller 管理模型和 View 之间的交互,它们都是独立的事物,可以独立存在,因此它引用它们(关联)它们不是它的复合部分(组合)。

我还要指出,在您的 UML 类模型示例中,术语 ModelViewContoller 中的解决方案构造设计模式,而不是您在设计或实现中必须具有的特定类型。您的场景中的“模型”实际上可能是Ticket 业务实体,也可能是一堆其他实体。 “ View ”可能是“TicketDetailsView”或“ListTicketsView”,“ Controller ”可能是“TicketController”。在 SmallTalk 中嵌入的原始 MVC 模式中, View 直接读取模型, Controller 操纵模型,而现在 MVC 模式有许多变体,其中的关联并不完全相同(MVP、MVVM、MVPC、页面 Controller 等)。

作为引用,我强烈建议阅读 Fowler ( https://martinfowler.com/eaaDev/uiArchs.html )。

关于oop - 如何在 UML 中正确建模 MVC 类图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55427988/

相关文章:

python - 将 Cassandra CQL3 与 Python Web 框架结合使用

uml - 图与模型 - 哪些信息不同?

uml - 我可以混合使用用例和部署 UML 图吗?

php - 需要一次停止脚本

php - 静态函数不好——但是有什么选择呢?

ruby-on-rails - 尝试访问时不引人注意地为关联创建记录?

actionscript-3 - ActionScript 3 : Sequence Diagrams for Event Handling

c# - 即使在 try catch 之后继续执行程序

javascript - 使对象的所有属性可变

java - 确保 Web 服务处理异常并始终返回有效响应