为什么MVC如此受欢迎?

Mik*_*ike 13 language-agnostic architecture model-view-controller layer

我本来打算把它作为一个更长的问题,但我觉得我做得越短越好,你就会越明白我的意思.

  • MVC架构模式有3个依赖项.视图取决于模型.Controller取决于视图和模型.该模型是独立的.

  • 图层架构模式定义了N-1个依赖关系,其中N是层数.

给定三个层:模型,视图和控制器,只有2个依赖项,而传统的MVC只有3个.结构如下所示:

View ---> Controller ---> Model
Run Code Online (Sandbox Code Playgroud)

[视图取决于控制器,控制器取决于型号]

在我看来,这种风格实现了相同的目标,产生更松散的耦合.为什么这种风格不常见?它真的实现了同样的目标吗?

编辑:不是ASP.NET MVC,只是模式.

关于格里格斯的帖子:

  • 就模拟而言,图层仍然允许您使用命令处理器模式来模拟按钮点击以及任何其他事件范围.
  • UI更改仍然非常简单,甚至可能更容易.在MVC中,Controller和View倾向于联系在一起.图层创建严格的分离.两个图层都是黑盒子,在实现中可以自由变化.
  • Controller对View有0个依赖项.可以编写视图,并且仍然可以通过松耦合保存时间.

gri*_*egs 16

因为您将接口与控制器分离,使更改更容易.

还要考虑需要开始项目的场景,但是艺术作品将在几周或几个月内没有准备好.您是等待还是编写页面所需的所有代码,然后将视图连接到控制器.

至少那是我们所做的,我们节省了几个月.

此外,它使UI更改更容易应对,因为我们的aspx页面中没有任何代码可以做任何事情.

我们的测试也更好,因为我们可以模拟任何东西,包括按钮点击等.

如果你在谈论asp.net-mvc框架,那么aspx文件中没有代码,也没有viewstate等.

  • 不,我不是.只有在我的最后一次发送中我才这样做,我甚至会说"如果你在谈论......" (11认同)

Mik*_*ike 1

我已经很久没有回过头来了,主要是因为我还在思考。我对收到的答案不满意,他们没有真正回答我的问题。

最近,一位教授确实引导我走向了正确的方向。本质上,他告诉我这一点:将模型、视图和控制器分开的层就是MVC。在普通的 MVC 架构模式中,通常不使用视图与模型之间的依赖关系,并且实际上最终会得到层。想法是一样的,只是命名不好。