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沒必要糾結於某二者之間具體的關係,若是可以使你的代碼層次更加分明,清晰明瞭,那不就夠了?若是都按照前人定好的模式去作又何來創新呢?事件