在MV*模式中,model指的是什么?

3
在MV*模式中,“M”代表什么,它到底是一个POCO还是一个包含所有笨重和可重复使用的业务逻辑的类?
我在网络上(以及SO)上阅读了很多内容,但术语确实令人困惑。有些人说模型应该是笨重的,这指的是整个可重用的业务逻辑。有些人说它是您的数据模型,这指的是POCO,即表格及其字段的副本。
如果它是POCO,则如何使其变得臃肿,并且业务逻辑应放在哪里?
我在几个项目中都实现了MVC,在这些项目中我的模型不是POCO;它包含可重复使用的业务逻辑。希望我做得对。
1个回答

4
根据MV *的定义,模型负责处理业务逻辑和管理数据。根据开发人员的经验,模型可以采用不同的形式,例如:服务+POCOs或服务+领域模型+策略等。有些开发人员喜欢将所有业务逻辑放入服务中,采用贫血领域模型。其他人喜欢尽可能在领域模型中保留逻辑,并仅为涉及多个领域模型的逻辑引入服务。
我与PHP开发人员进行了一些开放性的讨论,他们说MVC有两种“变体”:Fat Controller- Thin Model和Fat Model-Thin Controller,其中较重的一个会处理业务逻辑。但是我认为Fat Controller-Thin Model实际上不是一种变体,因为将业务逻辑放在控制器中会使您的业务逻辑无法重复使用,并违反单一职责原则。

模型可以以不同的形式存在。例如:服务+POCO或服务+领域模型+策略或其他形式。这解决了我大部分的疑惑。 - Amit Joshi
那么我可以说我的模型由BL + POCOs组成吗? - Amit Joshi
1
是的,尽管将业务逻辑与(当时贫血的)领域模型分离被认为是一种反模式(不良实践)。服务应该只包含事务性代码,而不是整个业务逻辑。 - Frank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接