我应该如何在 MVC 中制作 Class 图?
How should I make a Class Diagram in MVC?
这是我的 class图表:
在我看来(因为没有下一个就无法运行):
- 模型组成存储库,
- 存储库组成服务,
- 服务组成控制器。
我认为我对 UML 关系的理解是错误的。
在 MVC 中制作 class 图的正确方法是什么?
术语和语义
如果 classes 在没有另一个的情况下无法运行,则有一个 dependency。依赖绝对不意味着组合。
在面向对象编程中,我们经常提到组合,意思是object composition。这种关系比简单的依赖关系更强。这意味着 class 的每个对象可能需要知道另一个 class 的对象。在 UML 中,我们用 UML 关联表示它。
在某些情况下,对象之间的link更强,并且可能具有UML聚合或UML组合语义。但这并不是因为您组合对象,所以有 UML 组合。相同的术语,不同的含义(关于使用 UML 关联和组合以及避免 UML 聚合的更多建议:)。
在 MVC 中,Controller 与 Views 和 Model 相关联,每个 Views 也与 Model 相关联。没有UML组合。
符号
您不能用包组成 class。包描述命名空间并且可以嵌套。它们可以包含其他 UML 元素。但是它们不能 associated/aggregated/composed 和 classes.
您要找的似乎是component diagram:组件可以嵌套,并通过接口与其他组件关联。并且一个组件可以包含 classes.
图表内容
DDD 域模型和 MVC 模型之间似乎有点混淆。尽管是同一个词,但两个概念是不同的。
在MVC中,模型管理知识,即领域模型和应对领域模型所需的一切:
User
、Transfer
和Tax
属于DDD领域entities/aggregates,属于MVC模型
- 所有需要坚持这个知识的东西,比如
UserRepository
、TransferRepository
、TaxRepository
也属于MVC模式。如果您使用另一种持久性方法(例如 table 网关或活动对象),您将没有存储库,而是其他对象。
MVC 控制器处理用户输入,并将命令发送到视图和模型。它不是域对象的重复。
观点在哪里?你们服务的目的是什么?
- 它们是域服务吗,即涉及多个聚合并且自然不属于其中任何一个的操作?
- 它们是应用程序的服务层,意味着 link 它与外界联系吗?
这是我的 class图表:
在我看来(因为没有下一个就无法运行):
- 模型组成存储库,
- 存储库组成服务,
- 服务组成控制器。
我认为我对 UML 关系的理解是错误的。
在 MVC 中制作 class 图的正确方法是什么?
术语和语义
如果 classes 在没有另一个的情况下无法运行,则有一个 dependency。依赖绝对不意味着组合。
在面向对象编程中,我们经常提到组合,意思是object composition。这种关系比简单的依赖关系更强。这意味着 class 的每个对象可能需要知道另一个 class 的对象。在 UML 中,我们用 UML 关联表示它。
在某些情况下,对象之间的link更强,并且可能具有UML聚合或UML组合语义。但这并不是因为您组合对象,所以有 UML 组合。相同的术语,不同的含义(关于使用 UML 关联和组合以及避免 UML 聚合的更多建议:
在 MVC 中,Controller 与 Views 和 Model 相关联,每个 Views 也与 Model 相关联。没有UML组合。
符号
您不能用包组成 class。包描述命名空间并且可以嵌套。它们可以包含其他 UML 元素。但是它们不能 associated/aggregated/composed 和 classes.
您要找的似乎是component diagram:组件可以嵌套,并通过接口与其他组件关联。并且一个组件可以包含 classes.
图表内容
DDD 域模型和 MVC 模型之间似乎有点混淆。尽管是同一个词,但两个概念是不同的。
在MVC中,模型管理知识,即领域模型和应对领域模型所需的一切:
User
、Transfer
和Tax
属于DDD领域entities/aggregates,属于MVC模型- 所有需要坚持这个知识的东西,比如
UserRepository
、TransferRepository
、TaxRepository
也属于MVC模式。如果您使用另一种持久性方法(例如 table 网关或活动对象),您将没有存储库,而是其他对象。
MVC 控制器处理用户输入,并将命令发送到视图和模型。它不是域对象的重复。
观点在哪里?你们服务的目的是什么?
- 它们是域服务吗,即涉及多个聚合并且自然不属于其中任何一个的操作?
- 它们是应用程序的服务层,意味着 link 它与外界联系吗?