MVP介绍和实战源码
什么是MVP?
MVP是Model, View和Presenter的简称。是非常有名的MVC模式的演化版。MVP模式把显示逻辑和从业务逻辑层中分离出来,理想状况下,MVP模式中,在替换不同的视图(View)的情况下,可以实现完全相同的业务逻辑。
Presenter代替了MVC中Controller,它比Controller担当更多的任务,也更加复杂。Presenter处理事件,执行相应的逻辑,这些逻辑映射到Model的Command以操作Model。那些处理UI如何工作的代码基本上都位于Presenter。Presenter如同一个乐队的指挥家,表现和协调整个Application,它负责创建和协调其它对象。
MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。
为什么使用MVP模式
因为在Android中,Activity
严重耦合了界面和数据获取层。这样不仅导致了Activity
的类越来越庞大,而且,如果修改数据获取层,可能也导致整个View都要重写。也非常不利于模块和自动化测试。
MVP使View独立于数据,把大量的逻辑从Activity
中提取出来。把应用分层,每层都可以独立测试和变动。
MVP模式是如何工作的
MVP
模式中的角色划分并没有标准的划分方法。大致的定义如下:
-
表示器(Presenter)
表示器也可以称为指挥器,它处在View和Model之间,负责从Model中获取数据,然后返回给View。同时决定视图上的交互的处理。 -
视图(View)
视图比较好理解,在Android中一般对应的是Activity
,Fragment
或者View
。因为视图上的交互需要通知表示器,让它决定做什么事情。所以View中一般包含一个Presenter的引用。理想状况下,Presenter一般使用依赖注入的方式实现。 -
模型(Model)
模型是应用程序中的数据处理和业务逻辑部分。
MVP处理流程如下图所示:
好了,以上时MVP的介绍,相信大家已经了解,下面进行实战演练(不牵扯相应设计,只为了解思想):
正在编辑,待后续。