前言


MVP 是從經(jīng)典的模式MVC演變而來(lái)。Controller/Presenter負(fù)責(zé)邏輯的處理,Model提供數(shù)據(jù),View負(fù)責(zé)顯示。
下面我們從:區(qū)別、解決了什么關(guān)鍵問(wèn)題、缺點(diǎn)來(lái)再論MVP。
MVC和MVP的區(qū)別?
在MVP中View并不直接使用Model,它們之間的通信是通過(guò)Presenter來(lái)進(jìn)行的,所有的交互都發(fā)生在Presenter內(nèi)部,而在MVC中View會(huì)直接從Model中讀取數(shù)據(jù)而不是通過(guò) Controller。
簡(jiǎn)單一句話來(lái)說(shuō):MVP把View跟Model隔離了。
MVP解決了MVC哪些問(wèn)題?
1.隔離了View和Model,彼此訪問(wèn)都通過(guò)接口,強(qiáng)化了面向接口編程。
2.由于M、V、P三層都隔離了,彼此改變都相對(duì)獨(dú)立,無(wú)需“牽一發(fā),動(dòng)全身”,并且P層可以獨(dú)立重用。
3.單元測(cè)試優(yōu)勢(shì):P層可以模擬處理邏輯。
4.更有利于“先定義(接口),再實(shí)現(xiàn)”(先想好,再動(dòng)手)的做事方式。
5.低耦合的方式,更有利于插件化的開(kāi)發(fā)(固件升級(jí)概念)。
6.(歡迎補(bǔ)充,哈哈)。
MVP缺點(diǎn)
1.寫(xiě)法繁瑣,每個(gè)模塊下的MVP每一層都要開(kāi)放接口
2.致命缺陷,Activity的生命周期會(huì)讓MVP的接口調(diào)用出現(xiàn)泄漏問(wèn)題
小結(jié)
關(guān)于缺點(diǎn)的建議:1.寫(xiě)一個(gè)MVP分層生成插件 2.利用項(xiàng)目基類Activity的生命周期進(jìn)行Presenter的添加與釋放(不優(yōu)化此問(wèn)題你就等著crash吧)
