我看到许多网站和文章解释了视图从模型更新,如下面的示例
然而,我看到一些MVC架构的其他示例,显示该视图通过控制器更新
然而,我看到一些MVC架构的其他示例,显示该视图通过控制器更新
这取决于你是否有@Model进入你的意见?我只是想知道为什么不同版本的MVC,我们被教导它应该是第二个图像。
解决方法
MVC是一种松散定义的模式,可以让架构师对实现细节有更多的决定权。这可能是为什么存在MVC的许多变体。
据我所知,这一切都从经典(原创)MVC开始,将MVC分为三个部分,即模型,视图和控制器。目标是:
>实现模型和视图之间的松散耦合(观察者模式
用于实现它)。
>将业务逻辑封装到模型中,使其可以是穷尽的
测试。
>使视图尽可能笨拙/薄,以减少测试需要。
这种模式魅力如此之多,有几种变化(活动模型,被动模型,模型2)。这些变化是由于在特定框架中实现模式以适应框架的设计目标。
例如,一个变体是Model2。 Model2是一个Web变体(Classic MVC实际上是面向桌面应用程序),并被流行为“ASP.NET MVC框架”。
经典MVC和ASP.NET MVC框架的关键区别在于后者提供了模型和视图之间的整洁分隔,即无直接交互。而控制器负责在ASP.NET MVC框架中促进Model和View之间的这种沟通。这使得ASP.NET MVC Framework Web应用程序变得更加容易有效测试。
此外,在Model2中,可以在视图和控制器之间建立一种宽松的合同。在ASP.NET MVC框架中,此合同过去由ViewData容器对象表示,现在使用viewmodel对象。
为了避免混淆,我们需要考察当前使用的MVC模式实现中这三个部分(Model,View& Controller)之间的交互。还包含一个事实,即它是MVC模式的特定实现,一个图可能无法完全描述。