在 MVC 中应该如何构建模型?
在 MVC 中,模型代表应用程序的业务逻辑和数据。它封装了特定领域的逻辑和规则,使应用程序能够在不依赖 UI 或控制器的情况下执行任务并做出决策。
模型概念:
-
模型不是类或对象。它是由三个主要元素组成的层:
- 域对象:表示业务实体并包含特定于问题域的逻辑。
- 数据映射器:处理数据持久性以及与外部存储的交互,例如数据库。
- 服务:编排领域对象和数据映射器之间的交互,提供与业务交互的更高级别的接口
关注点分离:
- 模型层与 UI 层(视图和控制器)分离.
- 与模型的通信仅通过服务进行,确保明确的关注点分离并防止域逻辑泄漏到 UI 或控制器代码中。
- 这种分离促进了单一职责原则 (SRP)、灵活性和更容易的可测试性。
访问模型:
- 在视图和控制器中,您可以使用以下框架通过依赖注入访问模型服务Symfony 的 DI 容器或 Auryn。
- 服务可以注入到构造函数中或通过工厂访问。
- 这种方法确保所有必要的服务可供这些组件使用。
修改模型状态:
- 控制器负责处理用户输入并修改模型状态。
- 它们调用服务方法,这些方法又与域对象和数据映射器交互以执行必要的逻辑运算。
数据持久化:
- 域对象代表业务实体,但不知道存储。
- 数据映射器处理数据持久化和从外部存储检索。
- 这个分离允许业务逻辑保持独立于特定的存储技术
分离的好处:
- 通过为每一层分配明确的职责来强制 SRP。
- 提高代码可读性和通过隔离业务逻辑来实现可测试性。
- 提供灵活地修改业务逻辑或数据存储,而不影响其他组件。
- 通过提供用于访问模型服务的一致接口来简化外部 API 的开发。
其他注释:
- 数据库表并不总是直接映射到域对象和数据映射器。
- 视图不是模板,但处理表示逻辑和模板选择。
- 应该有一个 1: 1 每个页面或屏幕的视图和控制器之间的关系。
以上是MVC 架构中的模型层应该如何构建?的详细内容。更多信息请关注PHP中文网其他相关文章!