Android框架模式之MVC與MVP
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。
相關文章
- MVC模式和MVP模式的區別MVC模式MVP
- 淺談MVC/MVP/MVVM模式(概述)MVCMVPMVVM模式
- MVC,MVP 和 MVVM 模式如何選擇?MVCMVPMVVM模式
- MVC——MVP——MVVMMVCMVPMVVM
- MVC,MVP,MVVMMVCMVPMVVM
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- Android MVP模式專案實戰AndroidMVP模式
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- Android 架構設計:MVC、MVP、MVVM和元件化Android架構MVCMVPMVVM元件化
- [譯]iOS架構模式——解密MVC、MVP、MVVM和VIPERiOS架構模式解密MVCMVPMVVM
- Android框架之Volley與GlideAndroid框架IDE
- 一個基於Android的MVP框架DemoAndroidMVP框架
- [Django之框架設計模型(MTV與MVC)、Ajax]Django框架模型MVC
- Android MVP模式--簡單實用示例 BMIAndroidMVP模式
- Android專案框架搭建:mvp+retrofit+rxjava+rxbusAndroid框架MVPRxJava
- Android-Architecture 之 todo-mvp-cleanAndroidMVP
- MVC、MVP、MVVM,談談我對Android應用架構的理解MVCMVPMVVMAndroid應用架構
- mvp模式MVP模式
- Android MVP模式從入門到進門(一)AndroidMVP模式
- 理解並運用MVC,MVP,MVVMMVCMVPMVVM
- MVC、MVP和MVVM的區別MVCMVPMVVM
- 基於 MVP 的 Android 元件化開發框架實踐MVPAndroid元件化框架
- 【Android】一鍵生成MVP程式碼-DevMvp快速開發框架AndroidMVPdev框架
- MVC、MVCS、MVVM、MVP、VIPER等這麼多架構模式哪一個好呢?MVCMVVMMVP架構模式
- MVC、MVP和MVVM以及MVA比較MVCMVPMVVM
- 不要再問我MVC、MVP、MVVM了MVCMVPMVVM
- MVP框架的演化MVP框架
- Vue教程00:MVC、MVP、MVVM模式的區別,服務端渲染與客戶端渲染的區別VueMVCMVPMVVM模式服務端客戶端
- Android MVP 架構AndroidMVP架構
- 淺談前端MVC與MVVC模式前端MVC模式
- MVVM與MVC模式的比較MVVMMVC模式
- 前端面試查漏補缺--(十一) 前端軟體架構模式MVC/MVP/MVVM前端面試架構模式MVCMVPMVVM
- MVC框架MVC框架
- MVC、MVP、MVVM,我到底該怎麼選?MVCMVPMVVM
- 談談對MVC、MVP和MVVM的理解?MVCMVPMVVM
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之檔案下載(二)Android架構MVP模式RxJava封裝
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之斷點下載(五)Android架構MVP模式RxJava封裝斷點
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之檔案上傳(三)Android架構MVP模式RxJava封裝
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之常見問題(四)Android架構MVP模式RxJava封裝