1.MVP:先模仿照抄肋坚,搬運(yùn)工來啦
一種在android中實(shí)現(xiàn)MVP模式的新思路
2.android UI設(shè)計(jì)MVVM設(shè)計(jì)模式討論柄延?
上面的跟帖中贊同最多的作者寫了系列介紹,覺得不錯(cuò)挎峦,很清晰的思路:香追;
Android App整體架構(gòu)設(shè)計(jì)的思考(一)
Android App整體架構(gòu)設(shè)計(jì)的思考(二)
學(xué)而不思則罔,思而不學(xué)則殆坦胶。編程和練功一個(gè)道理透典,有時(shí)天天寫代碼就像天天練武,但不思考不看書就僅僅是花拳繡腿顿苇,沒有感悟就無法提升峭咒。但基礎(chǔ)不足就看到很深的理論,連個(gè)類都封裝不好就去看設(shè)計(jì)模式和架構(gòu)那肯定也像過早的得到了武功秘籍卻怎么看都像天書不知所云纪岁。不能一味悶頭去寫凑队,也不能每天什么都看,加點(diǎn)思考和對比~這么多語言學(xué)不過來的蜂科,觸類旁通掌握住主體思想才是終極策略顽决。
花了兩天時(shí)間看了些博客的分享短条,還有一些利用MVP思想實(shí)現(xiàn)的例子导匣,因?yàn)榇a的功底不是太扎實(shí)所以只能照葫蘆畫瓢似的自己實(shí)現(xiàn)的小的Demo,以前看過:不能因模式而模式茸时,可能很多App功能簡單贡定,小到用起來某種結(jié)構(gòu)反而變的復(fù)雜。如android在NDK的幫助文檔里寫到可都,不一定用了Jni就可以加速了缓待,需要實(shí)際的平衡性能和使用場景蚓耽。不管怎么樣,理解了思想以后才有更多的思考空間旋炒,技多不壓身嘛~
而且步悠,這種采蜜似的blog大搜羅真的有點(diǎn)像研究生時(shí)代為了準(zhǔn)備一個(gè)討論版ppt或者是一篇小論文而集中精力研讀相關(guān)paper的日子,由一篇開始瘫镇,然后根據(jù)它的引用繼續(xù)一篇篇的追溯鼎兽,這種鏈?zhǔn)降陌l(fā)散似的學(xué)習(xí)場景常常進(jìn)度延遲,但堅(jiān)持完成往往會有意想不到的收獲铣除。希望以后的過程中能把這些學(xué)到的東西以學(xué)習(xí)筆記或者代碼demo的形式記錄下來谚咬,升華為表達(dá)出來的東西才不容易忘記。
我看到的MVP:
翻譯的內(nèi)容:MVP并不算是一個(gè)架構(gòu)模式尚粘,因?yàn)樗恢赜诒憩F(xiàn)層择卦。MVP的主要作用是將View和數(shù)據(jù)源解耦,一般將app至少分為三層郎嫁。具體的實(shí)現(xiàn)形式很多秉继,主要看我們委托給Presenter層職責(zé)情況,比如開始設(shè)計(jì)的時(shí)候:VIew是否要管理進(jìn)度條的顯示或者隱藏和acrionbar上action等等泽铛。
面向接口的編程秕噪,降低View和Model的耦合度,基本它倆不用直接打交道了厚宰,都交給中間人Presenter來辦腌巾。具體實(shí)現(xiàn)上可能要寫的類的數(shù)目一下子增加了1-2倍,但是每個(gè)類的短小精悍铲觉,而且更好的體現(xiàn)了 設(shè)計(jì)模式的SRP單一職責(zé)原則澈蝙。
事件驅(qū)動event drive,被動視圖passive view撵幽,邏輯由Presenter來辦灯荧,具體實(shí)施上,一種方法:以一個(gè)登陸Activity為例
View:IView:定義所有l(wèi)ogin頁面上所有View可能的的動作接口盐杂,與邏輯相關(guān)的接口
Model:IUser:用到的數(shù)據(jù)接口逗载,定義View交互對數(shù)據(jù)影響的接口
UserModel:IUser的實(shí)現(xiàn)類
Presenter:IPresenter:定義所有l(wèi)ogin頁面上View和數(shù)據(jù)Model的邏輯相關(guān)的操作
PresenterCompl:IPresenter的實(shí)現(xiàn)類,IView和IUser都將作為它的成員變量链烈,當(dāng)然實(shí)例化的時(shí)候用各自的實(shí)現(xiàn)類也就是相應(yīng)的Activity和UserModel厉斟,并且在實(shí)現(xiàn)IPresenter中的方法時(shí)調(diào)用,Activity:LoginActivity强衡,需要實(shí)現(xiàn)IView接口擦秽。
需要IPresenter作為成員變量,當(dāng)然實(shí)例化的時(shí)候用PresenterCompl。
這樣的結(jié)構(gòu)的話感挥,Activity中基本的click缩搅、滑動等基本事件觸發(fā)時(shí)就能用PresenterCompl定義的邏輯處理,一般此時(shí)會用到數(shù)據(jù)Model的接口對接數(shù)據(jù)的變化触幼。當(dāng)邏輯執(zhí)行完畢后PresenterCompl中會驅(qū)動IView中的接口硼瓣,因?yàn)锳ctivity實(shí)現(xiàn)了這個(gè)接口,當(dāng)然也就能至執(zhí)行到相應(yīng)的代碼置谦。