前言
在Android日常開發(fā)中或者在面試過程中總會涉及到“設(shè)計(jì)模式”這個(gè)詞最铁。聽起來很厲害讯赏。實(shí)際上在開發(fā)中很常見又很難用準(zhǔn)確的言語表達(dá)出來。隨口說出的設(shè)計(jì)模式有:單例模式冷尉,中介者模式漱挎,觀察者模式等等這些都屬于java設(shè)計(jì)模式,這將會以單獨(dú)的系列篇在以后的文章中總結(jié)雀哨。此設(shè)計(jì)模式系列僅含有應(yīng)用架構(gòu)設(shè)計(jì)模式磕谅,這里我就MVC,MVP,MVVM這3個(gè)最常見的架構(gòu)設(shè)計(jì)模式來總結(jié)私爷。
MVC設(shè)計(jì)模式
首先,什么是mvc設(shè)計(jì)模式膊夹?mvc全名:模型視圖控制器衬浑,英文名:Model-View-Controller,mvc就是英文縮寫放刨,是一種軟件的設(shè)計(jì)典范嚎卫,將業(yè)務(wù)、數(shù)據(jù)宏榕、界面顯示分離的方法控制代碼拓诸。M/V/C三者之間的相互作用如下簡圖所示。
MVC定義
1. Model:業(yè)務(wù)邏輯處理麻昼,例如:數(shù)據(jù)庫操作奠支,網(wǎng)絡(luò)操作獲取數(shù)據(jù)源,甚至一些耗時(shí)的操作都可在此處理抚芦。
2. View:處理數(shù)據(jù)顯示的部分倍谜, xml布局就可以視為View層。
3. Controller:Activity處理用戶交互的問題叉抡,通過讀取view層的數(shù)據(jù)尔崔,然后把數(shù)據(jù)交給界面來顯示。
MVC優(yōu)缺點(diǎn)
優(yōu)點(diǎn):便于UI界面部分的顯示及業(yè)務(wù)邏輯的分離褥民。
缺點(diǎn):View對Model的依賴季春,會導(dǎo)致View也包含了業(yè)務(wù)邏輯;Controller會變得很厚很復(fù)雜,如下簡圖消返。
MVC****特點(diǎn)
耦合性低:模塊代碼間的關(guān)聯(lián)不是很高载弄,方便拆減一些業(yè)務(wù)模塊,由于顯示和邏輯分離撵颊,也達(dá)到了解耦的目的宇攻。
可擴(kuò)展性好:由于耦合性低,所以增加或者修改一些業(yè)務(wù)模塊也比較方便倡勇。
模塊職責(zé)劃分明確:M-V-C各司其職又相互作用來滿足業(yè)務(wù)需求逞刷。
MVC****實(shí)例講解
mvc模式在開發(fā)中非常常見。這里就以ListView為例妻熊。
AndroidManifest.xml
MainActivity.java
ContactAdapter.java
Contact.java
activity_main.xml
item_contact.xml
MVC總結(jié)
利用MVC設(shè)計(jì)模式夸浅,使項(xiàng)目有了很好的可擴(kuò)展和維護(hù)性。
Contronller(控制器)是一個(gè)中間橋梁的作用固耘。MVC的使用場景:一般用在比較大的項(xiàng)目中题篷,業(yè)務(wù)邏輯相對復(fù)雜的词身、需求修改比較頻繁的情況厅目。
3. MVC的真實(shí)存在是MC(V),Model和Controller根本沒辦法分開,隨著業(yè)務(wù)邏輯的增加损敷,Controller會變得很厚很復(fù)雜葫笼。
4. MVC的使用場景:一般用在比較大的項(xiàng)目中,業(yè)務(wù)邏輯相對復(fù)雜的拗馒、需求修改比較頻繁的情況路星。