1葫督、概述
什么是MVP模式呢竭鞍?相信大多數(shù)人都能說出來MVP是MVC的一個演化版本,雖說它們之間有所不同但是其基本思想有相似之處橄镜。MVP中偎快,M代表的是Model,V代表的是View洽胶,P代表的是Presenter這相當于MVC中的Controller晒夹。MVC在Android中的體現(xiàn)是,Model是JavaBean姊氓,View是xml布局文件丐怯,Controller是Activity。但是Activity并不是一個單純的Controller他膳,因為做為Android的臉Activity兼顧這和用戶交互的責任响逢,因此不可避免的會涉及到事件處理绒窑。所以Activity即像是View又像是Controller 且代碼通常很臃腫棕孙。
2、MVP與MVC的區(qū)別
兩者之間最大的區(qū)別就是,MVP模式中View不可以直接訪問Model蟀俊,而是通過Presenter來進行的钦铺。MVC模式中View是可以直接訪問Model的,并且還不可避免的會有些邏輯處理肢预。這點通過兩張圖可以很好的體現(xiàn)
圖一:MVC模式
圖二:MVP模式
圖片來自http://www.360doc.com/content/10/0225/18/867320_16805936.shtml
3矛洞、MVP是如何解決MVC的問題的呢
在MVP模式中出現(xiàn)了Presenter,它完全的將View和Model進行了分離烫映,Presenter是用于處理程序邏輯的從而MVP可以將Activity歸類于View之中沼本。Presenter與View并不是直接連接的而是通過接口的方式來實現(xiàn)的,這點通過代碼就可以體現(xiàn)锭沟。
4抽兆、MVP模式的優(yōu)缺點
優(yōu)點:View與Model完全分離,有效降低的耦合度族淮,并且更加方便測試辫红。
缺點:代碼量增多了這是一個不可避免的問題,不過換來的是項目結(jié)構(gòu)更加清晰祝辣。
下面是我自己參考別人代碼寫的一個例子贴妻,其中包含了一些Retrofit的東西
奉上源碼?RetrofitDemo