假设您有三种模型,Organization
,OrganizationUser
和User
。
您需要处理以下要求:
OrganizationUser
表中的一行)。 以下是我认为可以构建它的三种最佳方法:
CreateOrganizationService
来处理事务创建,将其从控制器中抽象出来;将其传递给模型。 CreateOrganizationService
是我们保留大多数业务逻辑的地方Organization
模型需要OrganizationUser
模型,并负责事务创建,业务逻辑和OrganizationUser
行的创建。 有没有更好的方法来考虑这一点,或者我可以采用不同的方法/模式?
最佳答案
控制器的工作是将传入请求转换为传出响应。为此,控制器必须获取请求数据并将其传递到服务层。然后,服务层返回Controller注入到View中进行渲染的数据。
MVC中的模型不是类,而是一个层。
该模型的工作是代表问题域,维护状态并提供用于访问和更改应用程序状态的方法。 “模型”层通常分为几个不同的层:
服务层-此层为应用程序的相关部分提供了内聚的高级逻辑。该层由Controller和View帮助器直接调用。
数据访问层-(例如Data Mapper)此层提供对持久性层的访问。该层仅由Service对象调用。
值对象/实体层-此层提供模型层次结构中“叶”节点的简单,面向数据的表示形式。
问题:不要将业务逻辑或事务放入控制器。将业务逻辑(和事务)内容放入服务类(模型层的一部分)。
Source