MVC簡介:
MVC全名是Model View Controller,如圖,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。
其中M層處理數(shù)據(jù),業(yè)務(wù)邏輯等;V層處理界面的顯示結(jié)果;C層起到橋梁的作用,來控制V層和M層通信以此來達(dá)到分離視圖顯示和業(yè)務(wù)邏輯層。
Android中的MVC:
視圖層(View)
一般采用XML文件進(jìn)行界面的描述,這些XML可以理解為Android App的View。使用的時(shí)候可以非常方便的引入。同時(shí)便于后期界面的修改。邏輯中與界面對(duì)應(yīng)的id不變化則代碼不用修改,大大增強(qiáng)了代碼的可維護(hù)性。
控制層(Controller) ------ Activity
Android的控制層的重任通常落在了眾多的Activity的肩上。這句話也就暗含了不要在Activity中寫代碼,要通過Activity交割Model業(yè)務(wù)邏輯層處理,這樣做的另外一個(gè)原因是Android中的Actiivity的響應(yīng)時(shí)間是5s,如果耗時(shí)的操作放在這里,程序就很容易被回收掉。
模型層(Model)
我們針對(duì)業(yè)務(wù)模型,建立的數(shù)據(jù)結(jié)構(gòu)和相關(guān)的類,就可以理解為AndroidApp的Model,Model是與View無關(guān),而與業(yè)務(wù)相關(guān)的(感謝@Xander的講解)。對(duì)數(shù)據(jù)庫的操作、對(duì)網(wǎng)絡(luò)等的操作都應(yīng)該在Model里面處理,當(dāng)然對(duì)業(yè)務(wù)計(jì)算等操作也是必須放在的該層的。就是應(yīng)用程序中二進(jìn)制的數(shù)據(jù)。
MVC的缺點(diǎn):
在Android開發(fā)中,Activity并不是一個(gè)標(biāo)準(zhǔn)的MVC模式中的Controller,它的首要職責(zé)是加載應(yīng)用的布局和初始化用戶 界面,并接受并處理來自用戶的操作請(qǐng)求,進(jìn)而作出響應(yīng)。隨著界面及其邏輯的復(fù)雜度不斷提升,Activity類的職責(zé)不斷增加,以致變得龐大臃腫。
總結(jié):
視圖(View):用戶界面。
控制器(Controller):業(yè)務(wù)邏輯
模型(Model):數(shù)據(jù)保存
View 傳送指令到 Controller
Controller 完成業(yè)務(wù)邏輯后,要求 Model 改變狀態(tài)
Model 將新的數(shù)據(jù)發(fā)送到 View,用戶得到反饋
