1.背景
为了使View(activity/fragment)“干净”没有更多业务逻辑污染,引入MVP设计业务逻辑,在项目中应用MVP可以使业务逻辑与view职责相对比较清晰。
2.MVP概述
MVP(Model,View,Presenter)是MVC的演进版本,在MVC的基础上所View(Activity)中的逻辑与界面进行分离,使界面不与具体逻辑杂糅在一起,做到彻底解耦。
Model:具体数据实体,逻辑处理层,负责数据的处理。
View:界面层(Activity,Fragment),负责事件处理和View绘制。
Presenter:数据逻辑处理层,负责连接View与Model桥梁。
3.MVP与MVC架构区别
image.pngimage.png
4.MVP处理流程
用户的事件或者请求首先会到达View,View传递请求到处理逻辑的Presenter,Presenter从Model层获取数据后,再把处理的数据结果通过对应View的接口传递到View上。View负责显示对应的数据。
5.为什么使用MVP
像MVC设计就会使得界面与逻辑杂糅在一起,使得View(Activity、Fragment)类越来越大,业务逻辑与界面耦合在一起,不好维护,同时违背了职责单一的设计原则,而使用MVP架构完全可以做到让View与Model分离。让View只做显示,Model负责数据处理,处理完数据之后通过接口的形式回调给View层即可。
6.优缺点
6.1优点:
1.逻辑与界面完全解耦
2.便于单元测试,测试逻辑方便
3.逻辑清析,职责分明单一,View层仅仅做展示不杂糅任何业务逻辑
6.2缺点:
1.接口可能会定义很多
2.每个业务需要一个或者多个Presenter.
7.MVP\MVC\MVVM选择?
任何一种架构都有使用场景,应该根据具体情况,选择合适的。
网友评论