【问题标题】:How should I call non-database models?我应该如何调用非数据库模型?
【发布时间】:2017-09-02 06:11:27
【问题描述】:
假设我有一个用于计算复杂矩阵运算的 Web 应用程序。该应用程序还允许用户交互。所以我的应用程序包括:
映射到数据库表的 ORM 模型:
- 用户
- 评论
- 历史(请求的操作)
此外,还有一些其他类用于:
- 计算基本运算,例如乘法、求和等
- 矩阵类。
- 矩阵逆变器。
- 使用矩阵计算图形处理操作的类。
因此,在大多数网络应用程序中,人们仅将“模型”视为映射到数据库中某些内容的模型。但最初,模型一词也指任何属于应用程序逻辑的内容。
据我所知,我提到的第一种模型是“域”模型。 (我不确定这一点,所以请随时纠正)。但是第二个,它叫什么名字?
【问题讨论】:
标签:
oop
model-view-controller
orm
【解决方案1】:
对我来说,第一个是 数据模型,它具有 实体 User、Comment、History。是的,都是单数!因为表名应该代表它存储的单个对象,所以当使用 ORM 映射时,整个表集可以映射为Collection<User> Users。
第二个是领域层,它不了解数据持久性,并拥有您的应用逻辑所需的一切。所以我将Matrix 类称为一个域对象,而只有一个MatrixService 对传递给它的Matrix 实例执行乘法、求和、求逆等基本操作。
由于 MVC 在标签列表中,我想补充一点,MVC 中的 M(模型)是概念术语,您不需要将任何东西真正命名为模型/模型。您可以/应该将此 M 部分分离为单独的库,并将它们称为 {app}.domain、{app}.data、{app}.services 等等。它们一起将代表 MVC 中的 M,并做所有 Controller 不应该做的事情。