MVP架構(gòu)的入門初學(xué)篇:
? ? ?MVC搞的越來越難做寫測(cè)試,是時(shí)候換一個(gè)啦!學(xué)習(xí)一下MVP的基礎(chǔ)概念,做了一個(gè)入門的Demo
?總的來說:
1囊榜,MVP (數(shù)據(jù)層和UI層完全隔離)
2,M數(shù)據(jù)層(數(shù)據(jù)庫網(wǎng)絡(luò)文件等與數(shù)據(jù)相關(guān)的數(shù)據(jù)層)---(不是model)
3亥宿,V UIView以及子類+ UIViewConreoller以及子類只是創(chuàng)建UI和刷新數(shù)據(jù)
4卸勺,P中介(用于關(guān)聯(lián)M和V )
? ? ? v和p交互解決方案代理(定義交互協(xié)議)
? ? ? p層關(guān)聯(lián)M層和V層,持有M層對(duì)象的引用和V層對(duì)象的引用
接下來用展示一些小Demo烫扼,類似一個(gè)登陸的功能
1曙求,首先創(chuàng)建Model層,實(shí)現(xiàn)一個(gè)登錄的方法login映企,這一層用于處理數(shù)據(jù)悟狱,但是數(shù)據(jù)的來源要封裝處理,便于拓展:
2堰氓,V層實(shí)現(xiàn)一個(gè)代理挤渐,用于P層數(shù)據(jù)回調(diào)給V層
3,實(shí)現(xiàn)Presenter層
? ? ?(1) 持有M和V
(2)實(shí)例化
(3)實(shí)現(xiàn)一個(gè)login方法双絮,調(diào)用M層的login方法挣菲,這個(gè)方法用來給V層調(diào)用
(4) 實(shí)現(xiàn)V和P的綁定和解綁方法
(5)整體代碼,這里在使用
//從m層的的回調(diào)掷邦,回調(diào)到v層去,同樣還是通過一個(gè)代理實(shí)現(xiàn)
self.loginViewDelegate?.onLoginResult(result: result)?
這里的self.loginViewDelegate應(yīng)該是需要校驗(yàn)的椭赋,因?yàn)榭赡転榭?/p>
4抚岗,View層的簡(jiǎn)單使用
5,到這里小Demo就結(jié)束了,感覺每一個(gè)View層都要?jiǎng)?chuàng)建協(xié)議哪怔?好坑爹宣蔚,從入門到放棄,哈哈哈认境!但是每一層都分離出來確實(shí)好測(cè)試很多胚委,單元測(cè)試的話