MVC模式:簡單的說就是通過Controller的控制去操作Model層數(shù)據(jù),并且返回給View展示.
MVC, 即Model-View-Controller;
Model: 數(shù)據(jù)層,負(fù)責(zé)處理業(yè)務(wù)邏輯,監(jiān)聽網(wǎng)絡(luò)與數(shù)據(jù)庫接口.
View : 界面(UI層,xml布局或者其他繼承View類的視圖),顯示來源于Model的數(shù)據(jù).
Controller: 控制器(Activity和Fragment),傳遞用戶交互和更新數(shù)據(jù).(包括:鍵盤敲擊套媚、屏幕觸摸侣背、電話呼入等。)
MVC典型例子的實現(xiàn)ListView/GridView/RecyclerView等.
Android中最典型MVC是ListView走越,要顯示的數(shù)據(jù)是Model椭豫,界面中的ListView是View,控制數(shù)據(jù)怎樣在ListView中顯示是Controller旨指。
優(yōu)點: 1. 數(shù)據(jù)層和視圖層分離,這樣視圖層修改而不用重新編譯模型和控制器代碼..
2. 重用性高---多個視圖能共享一個model
缺點: 1.Controller層會既是控制層又是view層,因為在xml中無法動態(tài)的去修改view,只能在Controller中去修改,這就造成了Actviity既是控制層又是view層.
2. View層和Model層是相互可知的,兩者之間存在耦合.
MVC工作原理:當(dāng)用戶觸發(fā)事件的時候,view層會發(fā)送指令到controller層赏酥,接著controller去通知model層更新數(shù)據(jù),model層更新完數(shù)據(jù)以后直接顯示在view層上谆构,這就是MVC的工作原理.
MVP(是MVC模式的演化版,這里Activity和Fragment不再是Controller而僅僅是作為View層,所有用戶事件的轉(zhuǎn)發(fā)都在Presenter層處理.)
MVP 模式所做的事情很簡單裸扶,就是將業(yè)務(wù)邏輯和視圖邏輯抽象到接口中。
從圖中看出,最明顯的差別就是view層和model層不在互相可知,完全的解耦,presenter層充當(dāng)了中介者,view層發(fā)出的事件傳遞到presenter層,presenter層去操作model層,并且將數(shù)據(jù)返回給view層,整個過程中view和model層沒有任何關(guān)聯(lián),
優(yōu)點: 1. 降低耦合度搬素,實現(xiàn)了Model和View真正的完全分離呵晨,可以修改View而不影響Modle
2. 模塊職責(zé)劃分明顯,層次清晰
缺點: 邏輯復(fù)雜的頁面,可能會有很多接口,維護(hù)接口的成本會很大.