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。
相關文章
- 淺談Android開發中記憶體洩露與優化與框架模式之MVC與MVPAndroid記憶體洩露優化框架模式MVCMVP
- 淺談框架模式 MVC、MVP 和 MVVM框架模式MVCMVPMVVM
- Android之MVC模式AndroidMVC模式
- MVC模式和MVP模式的區別MVC模式MVP
- 淺談MVC/MVP/MVVM模式(概述)MVCMVPMVVM模式
- MVC,MVP 和 MVVM 模式如何選擇?MVCMVPMVVM模式
- 淺談Android中的mvc,mvp,mvvmAndroidMVCMVPMVVM
- android MVC && MVP && MVVM分析和對比AndroidMVCMVPMVVM
- MVC,MVP,MVVMMVCMVPMVVM
- MVC——MVP——MVVMMVCMVPMVVM
- MVC、MVP、MVVMMVCMVPMVVM
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- 細說 Android 的 MVP 模式AndroidMVP模式
- 說說Android的MVP模式AndroidMVP模式
- MVC和MVVM,MVPMVCMVVMMVP
- [譯]iOS架構模式——解密MVC、MVP、MVVM和VIPERiOS架構模式解密MVCMVPMVVM
- 淺析前端開發中的 MVC/MVP/MVVM 模式前端MVCMVPMVVM模式
- iOS 架構模式–解密 MVC,MVP,MVVM以及VIPER架構iOS架構模式解密MVCMVPMVVM
- Android MVP模式專案實戰AndroidMVP模式
- [Django之框架設計模型(MTV與MVC)、Ajax]Django框架模型MVC
- 轉享:表現層架構模式比較:MVP(SC),MVP(PV),PM,MVVM 和 MVC架構模式MVPMVVMMVC
- 雜談: MVC/MVP/MVVMMVCMVPMVVM
- 【Android】一鍵生成MVP程式碼-DevMvp快速開發框架AndroidMVPdev框架
- Android 架構設計:MVC、MVP、MVVM和元件化Android架構MVCMVPMVVM元件化
- MVP那些事兒 (4) 在Android中使用MVC(下)MVPAndroidMVC
- MVP那些事兒 (3)……在Android中使用MVC(上)MVPAndroidMVC
- mvp模式MVP模式
- 聊聊Android開發中的MVP模式AndroidMVP模式
- Android的MVC開源框架AndroidMVC框架
- 一個基於Android的MVP框架DemoAndroidMVP框架
- Android MVP模式--簡單實用示例 BMIAndroidMVP模式
- 谷歌官方 Android MVP 模式程式碼解讀谷歌AndroidMVP模式
- Android上實現MVP模式的途徑AndroidMVP模式
- Android專案框架搭建:mvp+retrofit+rxjava+rxbusAndroid框架MVPRxJava
- MVC、MVP和MVVM的區別MVCMVPMVVM
- 深入分析MVC、MVP、MVVM、VIPERMVCMVPMVVM
- MVC,MVP 和 MVVM 的圖示MVCMVPMVVM