Android框架模式之MVC與MVP

LeBron_Six發表於2016-02-01

MVC (Model-View-Controller):顧名思義,M是指邏輯模型,V是指檢視模型,C則是控制器。一個邏輯模型我們可以才用多種檢視模型,例如進度條顯示,我們可以採用圓環、直線、容器式的試圖顯示,當然,一種檢視模型也可以對於多種邏輯模型。

MVC的作用:

1、將M層和V層的實現程式碼分離,從而使同一個程式可以在同一View下,有不同的表現形式;

2、C層則是確保M層和V層的同步,一旦M層有改變,那麼C層應該控制V去同步更新;

3、MVC是一個框架模式,它強制性的使應用程式的輸入、處理和輸出分開。

4、使用MVC應用程式被分成三個核心部件:模型、檢視、控制器,它們各自處理自己的任務。

MVC的好處:

1、MVC的價值,在於各模組的鬆耦合、複用,提高開發效率,在Android中,三個模組分離想對明顯,介面框架和ContentProvider模組得到充分複用;

2、從使用者的角度出發,使用者可以根據自己的需求,選擇自己合適的瀏覽資料的方式;

3、從開發者的角度,MVC把應用程式的邏輯層與介面是完全分開的,故開發者一般不需要管UI,主要把精力放在邏輯層上。

舉個例子,在Android中: 

1、檢視層(View):一般在layout下,採用XML檔案進行介面的描述,可以通過R.layout.***引入。當然,檢視的顯示絕不僅僅這些,還可以通過HTML5+CSS3+JS,利用Android自帶的WebView來顯示,另外,諸如PhoneGap的跨平臺開發框架,也是針對不同平臺的WebView做了擴充套件和封裝,使WebView這個元件變成可訪問裝置本地API,所以本質上還是用WebView;

2、控制層(Controller):控制器起到不同層面間的組織作用,用於控制應用程式的流程,處理事件並作出響應。Android的控制層的重任通常落在了眾多的Acitvity的肩上,這句話的另一層含義則是儘量不要在Acitivity中寫一些複雜邏輯的程式碼,這部分複雜的業務邏輯,交由Model層去處理,另外,耗時的操作儘量在子執行緒中執行,使得主執行緒能快速處理UI事件和Broadcast訊息,UI需要更新通過Handler、Messenger等方式通知主執行緒更新。眾所周知,Android主執行緒阻塞時間不能超過5秒,否則將會發生ANR(Application Not Responding)異常。

3、模型層(Model):對資料庫的操作、網路請求、格式轉換、檔案下載、大資料處理等的耗時操作都在Model裡面處理。

其實,MVC並沒有嚴格的定義,但是Android中,MVC三個層分離明顯,介面框架和ContentProvider模組得到充分複用,開發者並不需要在這方面話太多的心思去思考。


MVP(Model-View-Presenter):和MVC類似,Presenter就是Model和View互動的中間紐帶,負責處理與使用者互動的邏輯。

android-MVP模式:

View不直接與Model互動,而是通過與Presenter互動來與Model間接互動。
Presenter與View的互動是通過介面來進行的。
通常View與Presenter是一對一的,但複雜的View可能繫結多個Presenter來處理邏輯。

android-MVC模式:

View可以與Model直接互動。
Controller是基於行為的,並且可以被多個View共享,並且決定顯示哪個View。


相關文章