寫在前面:
之前只是總在別人嘴里聽說MVVM的設(shè)計模式意述,可能是因為環(huán)境問題,主要原因還是自己懶惰吧,只是聽說卻從未見過做盅。直到最近到了新公司接手的別人的項目才發(fā)現(xiàn)缤削,還有這種操作(其實就是看到了DataBinding)?感覺像發(fā)現(xiàn)了一個新大陸吹榴,也燃起了我重新開始寫文章的想法亭敢。在此我要感謝我的新公司,也要感謝這個讓我接觸到新知識的這個陌生人图筹,后面這個系列的文章都是從他這個項目基礎(chǔ)上修改后抽離出來生成的依賴帅刀。最后,希望自己能堅持把這個系列寫完吧远剩。下面開始都是我自己的理解扣溺,身邊也沒有能指導(dǎo)我的人,我也是摸著石頭過河瓜晤,如果有不正確的地方锥余,希望指出。
一痢掠、我所理解的MVVM
在之前驱犹,我一直以為MVVM是四部分双妨,M然低、V系奉、V绊含、M膏孟,當(dāng)時就想地沮,為什么會有兩個M和兩個V炕柔?現(xiàn)在才知道振坚,M(Model模型桑涎,也就是Android中的Bean類)彬向、V(View視圖,在Android中可以看做Activity)攻冷、VM(ViewModel,我的理解就是溝通View和Model的通道)娃胆,到現(xiàn)在我對MVVM設(shè)計模式的直觀感受就是Activity中的代碼少了,只有更新UI的操作了等曼,邏輯的處理都交給了ViewModel層里烦,結(jié)構(gòu)清晰看著方便。
1.MVC
在MVC設(shè)計模式下禁谦,主要是通過View調(diào)用Controler中的方法生成Model直接返回給View,再由View自己更新自己胁黑。
2.MVP
在MVP設(shè)計模式下,是通過接口回調(diào)州泊,View觸發(fā)Presenter丧蘸,Presenter生成Model觸發(fā)View返回Model的引用,View通過獲得的Model更新自己。其實感覺上好像并沒有什么區(qū)別遥皂,可能是因為Android本身的性質(zhì)就輕Model層吧力喷。
MVVM
在MVVM設(shè)計模式下刽漂,通過雙向綁定把View和Model關(guān)聯(lián)在一起,通過ViewModel維護兩者的關(guān)系弟孟,而View和Model都沒有對方的引用贝咙。
二、我所用到的框架和工具
1.databinding:數(shù)據(jù)綁定框架
2.okhttp拂募、gson庭猩、retrofit、rxjava:網(wǎng)絡(luò)通信及數(shù)據(jù)解析框架
3.glide陈症、circleimageview:圖片顯示和網(wǎng)絡(luò)圖片加載框架
4.rxpermissions:權(quán)限申請框架
5.utilcodex:工具類框架
6.SmartRefreshLayout:上拉下拉框架
7.eventbus:事件訂閱框架
8.Lifecycle:生命周期感知框架
9.autosize:屏幕適配框架
10.還有一些其他的掃碼蔼水、輪播之類的,每個項目需求不一樣录肯,就不說了