1、MVC架构
MVC模式再网上的争议是最大的,一些博客中是这样描述的
mvc
MVC模式的通讯是单向的,View触发事件或数据的提交,到了Controller进行处理逻辑以后,返回Model给View,View再从Model中取出数据,固然View中也会有相应的逻辑。我的认为这样的描述算是比较正确,让咱们来看看ASP.NET Core MVC项目中是如何处理的,在默认模板中的错误界面是这样的
mvvm
它的数据来自于Model,而且在Razor界面中作了部分的逻辑处理。那么Model是从哪里来的呢?
设计
在HomeController中有一个Error方法,它返回的即是一个View,这个View中带着一个Model。由此看来在微软定义的MVC中View确实是依赖于Model的3d
那么就有人说,这个Model不是Controller返回的吗,那View和Model并无直接通讯呀,MVC就是为了View和Model分离开。
1.固然我不否定这种说法,但我更偏向于前者。能够看出来Controller返回的是整个Model,并非将Model拆分开来依次解析后返回给View,因此我以为既然Model的数据逻辑是在View界面本身处理的,那为何非要不认可他们之间有直接的依赖关系呢?code
2.也能够理解一下第二种说法,第二种说法观点在于V-C-M-C-V这种走向,这种说法表示View中的Model是由Controller返回的,那么View和Model之间并无直接联系。我认为这样的话MVC模式更偏向于MVP模式了,那么MVP惟一的进步就是,完全简化了View层,将View对Model的处理逻辑所有移动到Controller(Presenter),由Presenter给View中的控件赋值。以下图:
blog
模式架构是用来设计代码的,duck没必要纠结于某二者之间具体的关系,若是可以使你的代码层次更加分明,清晰明了,那不就够了?若是都按照前人定好的模式去作又何来创新呢?事件