MVP和MVC
MVC模式:MVC实际上就是MV模式,把一下网络请求更新业务逻辑更新UI界面等功能写在Activity里面,例如:网络请求图片回调更新加载到Activity的ImageView控件上,Activity已经切换入了后台,但是还保留对Activity实例的引用,无法回收,使有可能出现内存泄漏;
Model:就是JavaBean实体类,用于保存实例数据
View和Controllor:对应于Activity,其实就是程序的 UI 界面,用于向用户展示数据以及接收用户的输入MVP模式:MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Mode;
Model:JavaBean实体类
View:UI逻辑
Presenter:负责完成View于Mode间的交互,业务逻辑- MVP作用
- 分离了视图逻辑和业务逻辑,降低了耦合;
- Activity只处理生命周期的任务,代码变得更加简洁;
- 视图逻辑和业务逻辑分别抽象到了View和Presenter的接口中去,提高代码的可阅读性;
- Presenter被抽象成接口,可以有多种具体的实现,所有方便进行单元测试;
- 业务逻辑抽象到Presenter中去,避免后台线程引用着Activity导致Activity的资源无法被系统回收从而引起内存泄漏和OOM;
- MVP使用
- 创建IPresenter接口,把所有业务逻辑的接口都放在这里,并创建它的实现PresenterCompl(在这里可以方便地查看业务功能,由于接口可以有多种实现所以也方便写单元测试);
- 创建IView接口,把所有视图逻辑的接口都放在这里,实现类是当前的Activity/Fragment;
- Activity里包含了一个IPresenter,而PresenterComple里有包含了一个IView并且依赖了Model,Activity里只保留对IPresenter的调用,其它工作全部留到PresenterCompl中实现;
- Model并不是必须有的,但是一定会有View和Presenter;