理解:MVP是种软件设计的架构,每个人的认知理解也各有不同,真正使用起来,要根据个人的技能水平,还有业务需求去选择。没有硬性规范做法,只有官方推荐做法。
MVC介绍
- Model:业务逻辑和实体类
- View:布局文件
- Controllor:对应Activity
MVP可以理解是MVC的演化版本,相对于MVC的区别是将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 业务逻辑和实体类
- View 布局文件以及Activity
- Presenter 负责完成View于Model间的交互
MVP核心思想:把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model不变。
从MVC模式到MVP模式的好处
1.减少Activity中的代码,让代码更加简洁。
2.分离视图逻辑和业务逻辑,解耦。
3.Present抽象成接口,可以有多重具体的实现,方便进行单元测试。
4.把业务逻辑抽到Presenter中去,避免后台线程引用着Activity导致Activity的资源无法被系统回收从而引起内存泄露和OOM
解释:Android默认的MVC模式,是在Activity中进行一些异步任务,如下载图片,网络请求等。当进行异步任务时,会持有当前Activity的引用。若在任务没有完成的情况下,应用被切换到后台(Activity执行了 onDestroy()方法),而且异步任务还是会持有Activity的引用,导致无法回收该Activity实例,造成Activity leak,进而更进一步引发OOM
MVC与MVP区别
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