【郭林专刊】MVC已过时,MOVE时代来临?
MVC是一個很常用的程序開發設計模式,M-Model(模型):封裝應用程序的狀態;V-View(視圖):表示用戶界面;C-Controller(控制器):對用戶的輸入作出反應,創建并設置模型。
關于這個話題由來已久,MVC并不適合小型甚至中等規模的應用程序,花費大量時間將MVC應用到規模并不是很大的應用程序通常會得不償失。在實際使用中,開發人員在不知道把代碼放在哪里的時候,都喜歡把代碼放在Controller里面。
為了解決上述問題,LinkedIn的軟件工程師Conrad Irwin開始使用另一種模式:MOVE采用了一個新的模型:MOVE:Model,Operation,View and Event。日前Conrad Irwin在個人博客上分享了關于這種模式的一些觀點。
上面這張圖顯示了MOVE這個模式的基本架構。下面詳細介紹一下該模式:
- Model:封裝所有應用程序對象。
- Operation:封裝所有應用程序執行的動作。
- View:應用程序和用戶之間的中介。
- Event:鏈接所有組件事件。
為了避免面條式代碼,應該允許每種對象類型。在上圖中,已經用箭頭標明出來,例如,View允許通過Mdoel去監聽Event、可以允許改變模型,但Model不應該只參照View或Operation。
Model
以一個“用戶”對象為例,這個Model至少有一個email、姓名和電話號碼這幾個屬性。
在MOVE應用程序模型中Model只封裝了簡單的方法。這也就意味著除了getters和setters,還會包含一些驗證函數,比如:“密碼正確嗎?”。但不包含把數據保存到數據庫或者加載數據到外部API中的方法,這些都應該是Operation來完成的事情。
Operation
應用中,比較常見的Operation應用是一個用戶登錄程序。它實際上是由兩個子操作完成的:首先,從user中獲取郵箱地址和密碼,其次從數據庫中讀取user對象信息,并且檢查兩者數據是否匹配。
在MOVE模型中,Operation永遠都是一個執行者。負責對Model進行修改、適時顯示正確的視圖給用戶、對用戶觸發的事件做出響應。在一個分解良好的應用程序中,相對Operation每個sub-operation都可以在其中單獨運行。這就是為什么Event箭頭向上而Changes向下。
這樣做的好處在于:在程序運行時,開發者可以把整個應用當作一個Operation。如果需要,它還可以盡可能地分解為更多的sub-operation,而每一個sub-operation都可以并行運行,然后在它們都結束時程序結束運行。
View
登錄界面就是一個視圖,顯示幾個文本框。當用戶點擊“登錄”按鈕時,視圖將產生一個“loginAttempt”事件,并且把用戶輸入的用戶名和密碼傳送過去。
視圖就是用戶看到的整個界面并且用戶還可以通過界面與程序進行交互。它們不僅會以一個易于理解的方式來顯示應用程序,而且還可以把用戶傳入的信息簡化成有意義的事件來與用戶進行交流。
重要的是,視圖并不會直接改變模型,它們只會發出事件給Operation,并且等待Model發出事件響應。
Event
用戶點擊登錄按鈕時,視圖會產生一個“loginAttempt”事件。此外,當登錄這個操作完成后,“currentUser”模型會發出一個事件去通知你的應用程序。
事件監聽和MVC/MOVE里的控制剛好相反,開發者需要允許Model去更新View,即使在Model不清楚哪個View正在更新。
總結
本文并不是強調MVC有多糟糕,在過去的幾十年里,它以難以置信的方式成功構建了許多大型應用程序。但它畢竟是幾十年前為老技術而設計的,而MOVE作為一個新技術,在原有的基礎上進行升級,以更好的適應軟件開發的需求。(編譯:張紅月)
原文:MVC is dead, it's time to MOVE on
轉載于:https://www.cnblogs.com/javaTest/archive/2012/07/12/2589568.html
總結
以上是生活随笔為你收集整理的【郭林专刊】MVC已过时,MOVE时代来临?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zip unzip 命令
- 下一篇: GridView自定义分页