這里僅僅記錄自己對于mvp模式的理解
mvp是從mvc演化而來的,想了解mvp就先必須了解mvc
mvc是什么, v view ?m ?model ? c controller
他們?nèi)叩年P(guān)系是什么樣的呢,
view ?即 視圖 ,負責用戶的輸入,和界面的顯示 ,需要數(shù)據(jù)是直接從model中拉取數(shù)據(jù)
model ?數(shù)據(jù) (網(wǎng)絡上或者本地數(shù)據(jù)) ?獲取數(shù)據(jù)后處理后顯示在界面上,當數(shù)據(jù)發(fā)生變化時 ?直接通知view更新數(shù)據(jù)
controller ?負責view輸入的信息后調(diào)用model的數(shù)據(jù) 呈現(xiàn)在界面上給用戶顯示 ?
在這里view和model是有直接的聯(lián)系的,耦合性高 下面我畫張圖來說明mvc的關(guān)系
可以看到model和view是有直接聯(lián)系的,這樣子不方便測試,后期維護也很麻煩,所以演化出了mvp
mvp和mvc的區(qū)別就是model和view不再有直接的聯(lián)系,所有的溝通都通過presenter來進行,他們?nèi)叩年P(guān)系如下圖所示
可以看到model和view是沒有直接的聯(lián)系了,完全通過presenter來操作,model是三者里面獨立性最高的,可以方便做單元測試,
我本人還在熟悉mvp模式,所以說的不是很深刻.? 我們只要理解各司其職,該誰完成的就誰做,不要混亂在一起,即便不用mvp整個項目結(jié)構(gòu)也是跟清晰的,生搬硬套的話還是混論的,先理解在運用, 網(wǎng)絡請求 數(shù)據(jù)處理 界面顯示? 應放在那里.
推薦一篇文章 ? ?個人認為寫的不錯http://www.lxweimin.com/p/50c7124f408e