为什么要使用模型-视图-控制器(MVC)?

3

为什么开发人员在设计GUI时应该注意Model-view-controller?还有其他元素需要开发人员注意吗?

8个回答

4
MVC将帮助您将GUI的责任与您想要的业务规则分开,以后您可能想要重用某些代码或更改它,拥有MVC将有所帮助。
以下是Martin Fowler提供的其他GUI架构。

http://martinfowler.com/eaaDev/uiArchs.html

模型-视图-表示器(MVP)

谦逊的视图

等等。


2

如果您不将模型与视图分开,那么当您发现想以不同的方式呈现相同的信息时,稍后重构将会非常困难。


2

这些都是好的回答,我同意它们,除了我偶然发现了另一种方法,现在我宁愿挖沟渠也不想使用MVC。


我看到了这种方法的好处,但我不明白它与MVC有什么互斥之处。 - Imagist
@Imagist:在动态对话框中,模型只是一个简单的数据结构,视图只是一个简单的“绘制”程序,并且没有控制器需要程序员编写。程序员不必担心事件、通知、绑定或任何类似的内容。 - Mike Dunlavey
我建议删除您在维基百科上的文章。那篇文章是对您工作的广告,在百科全书的环境中相当不相关。 - Marian
@Marian:谢谢你没有告诉我这是假的。 - Mike Dunlavey

1

MVC并不是与界面设计有太多关系,而更多地涉及应用程序的实现和与业务逻辑的交互。

http://en.wikipedia.org/wiki/Model–view–controller


1

模型视图控制器架构简单地意味着分离:

    1. 数据(模型)
    2. 用户界面(视图)
    3. 应用程序逻辑(控制器)

它的优点在小型项目中可能不明显。然而,正如其他人所提到的,当团队合作并且特别是应用程序需要扩展时,MVC非常有用。

另一种你想熟悉的技术是对象关系映射器。它是一组类,为数据库提供面向对象的接口。


0

MVC是现代应用程序开发的需求。看一下Model-View-Controller

摘要:

如何将Web应用程序的用户界面功能模块化,以便您可以轻松修改各个部分?

模型-视图-控制器(MVC)模式根据用户输入将域建模、表示和操作分为三个单独的类[Burbeck92]:

  • 模型。模型管理应用程序域的行为和数据,响应对其状态的信息请求(通常来自视图),并响应更改状态的指令(通常来自控制器)。
  • 视图。视图管理信息的显示。
  • 控制器。控制器解释用户的鼠标和键盘输入,根据需要通知模型和/或视图进行更改。

实际上,这并不适用于任何“现代”(1990年后)的环境,因为除了游戏之外,很少有应用程序希望以足够独特的方式处理鼠标和键盘,需要编写专门的代码。 - soru

0

我知道你标记了这个为Java,但这也可以应用于JavaFX甚至基于Web的应用程序。

目前在WPF中流行的一种技术是Model-View-ViewModel,如下所示:

  • Model代表您的业务层,在这里您的业务逻辑驻留,这完全与您的UI无关
  • View是您控件的用户界面组件,主要是XAML标记
  • ViewModel:是您的UI将与之交互的数据组件,这也是您将定义与模型交互的命令的地方。在某些方面,这可以被视为控制器,但它具有状态,而控制器通常没有太多状态。

0

模型-视图-控制器是封装程序不同部分的常用方式之一,但这并不是唯一的方式;还有许多其他选择。例如,许多GUI系统使用小部件+样式而不是视图+控制器。综合功能大致相同,但责任的分离略有不同。在小部件+样式中,每个小部件的视觉表示与其操作紧密关联(有点像一堆微小的视图+控制器系统)。应用程序的整体外观和感觉由样式确定(这就使得视觉系统具有凝聚力,而在MVC中,视图是使视觉系统具有凝聚力的因素)。

MVC非常普遍,因为它通常易于理解和维护,并且广泛适用。我的建议是要学好它并经常使用它。但我也警告不要让它成为你的“锤子”(当你只有一把锤子时,所有东西都开始看起来像钉子)。了解其他选项并在适当时使用它们。


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