首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC中的M在哪里?

MVC中的M在哪里?
EN

Software Engineering用户
提问于 2011-12-01 13:20:52
回答 13查看 6.4K关注 0票数 14

我正在尝试将我的应用程序重构成MVC,但我仍然停留在M部分。

在数据库支持的应用程序中,模型是在应用程序代码中实现的,对吗?

但是,数据库中有什么--这也不是模型吗?

(我不使用数据库作为简单的对象存储- DB中的数据是企业资产)。

EN

回答 13

Software Engineering用户

回答已采纳

发布于 2011-12-01 13:28:17

是的,代码和数据库中的模型都是“模型”。

模型与您的应用程序“是”什么有关,控制器是它“做”什么的。任何处理数据库直接持久性的代码都被认为是模型。

注意: MVC是一种模式,所以不要想得太多。很容易让所有的超级用户都以正确的方式完成MVC,但最终,这只是一种思维方式!这意味着将业务逻辑排除在数据库和UI之外--仅此而已。在MVC之前,当业务逻辑应该放在服务器上时,人们会把所有的业务逻辑都放在他们的网页中,或者他们会让一堆脚本在数据库中触发,同时执行业务逻辑和持久化代码。MVC是为了让人们开始思考,使他们的代码可重用,所以不要太在意细节。

票数 46
EN

Software Engineering用户

发布于 2011-12-01 14:34:30

Trygve早在1978年就写了描述MVC模式的初始文件。模型在他的描述是对象模型,代表现实世界的对象,现象和概念。在数据库支持的应用程序场景中,模型是数据的投影。简单地说,模型是应用程序所关注的类及其关系。

在实践中,MVC中通常使用两种模型:领域模型(与数据库的映射)和应用程序模型(在今天的术语中也称为视图模型)。应用程序模型是域模型的投影,它还包含用于呈现视图的视图特定数据。这种方法称为MMVC。控制器直接与域模型交互,并向视图提供应用模型。在MVVM模式中,将应用模型和控制器结合起来。

票数 17
EN

Software Engineering用户

发布于 2011-12-01 20:33:09

  1. 您不需要MVC的数据库。如果您的模型碰巧与数据库对话,那么很好。它也可以将自己持久化到一个平面文件,或者根本不持久化。
  2. 模型是将数据存储在应用程序中内存中的地方。您还需要使用该模型对其数据进行计算和验证。例如,您有一个FinancePayment模型,它具有诸如利率、期限和原则等属性。您可以向模型中添加一个getMonthlyPayment()方法来计算月支付。您不希望在控制器或视图中这样做。
  3. 视图应该相当愚蠢,要么根本没有逻辑,要么只使用简单的数据绑定(请参阅马丁·福勒网站上的被动视图和监视控制器模式)。当用户执行操作时,该视图会引发事件,例如单击按钮。
  4. 控制器负责处理事件(当用户单击“保存”按钮时运行一些代码),并负责设置模型属性,并告诉模型加载和保存自身(如果使用持久性)。控制器不应该对模型的数据进行计算。但是,在控制器中,您可以代表视图进行一些计算,例如“如果model.profit() <0,那么widget.colour = 'red'”
  5. 您应该能够切换到应用程序的命令行版本,而无需更改模型,也不会丢失模型的功能。

您应该能够切换到应用程序的移动版本(相对于桌面版本),只需切换视图(而不是控制器或模型)。您应该能够在没有GUI测试框架的情况下对模型和控制器进行单元测试。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/122710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档