理解:MVP是種軟件設計的架構突想,每個人的認知理解也各有不同沃琅,真正使用起來哗咆,要根據(jù)個人的技能水平,還有業(yè)務需求去選擇益眉。沒有硬性規(guī)范做法晌柬,只有官方推薦做法。
MVC介紹
- Model:業(yè)務邏輯和實體類
- View:布局文件
- Controllor:對應Activity
MVP可以理解是MVC的演化版本郭脂,相對于MVC的區(qū)別是將M和V完全解耦年碘,一般使用的都是是MVC模式,但是在Activity
中既有操作View
的部分展鸡,又有Controllor
的部分屿衅。可以理解為Android主要是用的MV模式莹弊,而沒有完全獨立的C涤久。
Most of the modern Android applications just use View-Model architecture,everything is connected with Activity.
MVP介紹
- Model 業(yè)務邏輯和實體類
- View 布局文件以及Activity
- Presenter 負責完成View于Model間的交互
MVP核心思想:把Activity中的UI邏輯抽象成View接口忍弛,把業(yè)務邏輯抽象成Presenter接口响迂,Model不變。
從MVC模式到MVP模式的好處
1.減少Activity中的代碼细疚,讓代碼更加簡潔蔗彤。
2.分離視圖邏輯和業(yè)務邏輯,解耦疯兼。
3.Present抽象成接口然遏,可以有多重具體的實現(xiàn),方便進行單元測試镇防。
4.把業(yè)務邏輯抽到Presenter中去,避免后臺線程引用著Activity導致Activity的資源無法被系統(tǒng)回收從而引起內存泄露和OOM
解釋:Android默認的MVC模式潮饱,是在Activity中進行一些異步任務来氧,如下載圖片,網(wǎng)絡請求等香拉。當進行異步任務時啦扬,會持有當前Activity的引用。若在任務沒有完成的情況下凫碌,應用被切換到后臺(Activity執(zhí)行了 onDestroy()方法)扑毡,而且異步任務還是會持有Activity的引用,導致無法回收該Activity實例盛险,造成Activity leak瞄摊,進而更進一步引發(fā)OOM
MVC與MVP區(qū)別
MVC Date與View耦合性太高
MVP View與Data解耦###
架構對比###
參考文章###
http://blog.csdn.net/lmj623565791/article/details/46596109
https://segmentfault.com/a/1190000003927200
https://github.com/antoniolg/androidmvp
https://github.com/googlesamples/android-architecture