一、什么是MVP
Model是模型,指的是数据源层,包含实体类或者数据接口,远程服务器API等
View是视图,可以是一个Activity或者其他View
Presenter主导器,负责从Model获取数据提供给View,从View获取数据提供给Model修改,还负责后台任务(大概指的是业务逻辑或者Service,其他线程任务吧)。
二、为什么要使用MVP
绝大多数Android程序使用View-Model架构,这样做有个缺点,就是View和Model之间错综交互,修改一处则会牵动其他地方,导致维护性和拓展性极差,不符合Kiss原则。
如果使用MVP,则好处之一是View和Model(Data)之间界限分明,功能明确,对象变得小了,更容易测是。View在请求数据的时候甚至不需要使用回调,避免回调地狱。
好处之二是处理configuration改变或者发生out-of-memory事件的情况下。
三、例子
实现的功能图片:
首先,创建几个包
注意bean表示实体类,model要用的,单独分开。
接着,创建类和接口
Presenter一方面要与view交互,一方面要与model交互,因此需要两个interface。
然后,分析各自要包含的内容。
一从presenter开始,它需要两个interface的引用,还需要处理事务,因此它的成员有
二model的interface的内容。因为要获取实体,并且要修改实体,所以它的内容如下
三view的interface的内容。因为用户交互(用户输入、点击等)会产生数据,动作、结果,数据要通过presenter给model,动作要产生结果。即用户输入的name和password要给model,用户点击login有成败的结果,用户点击clear有结果要展示,所以它的内容有
四、三个interface的实现。这个很容易,注意viewinterface的实现在activity上。
最后在activity中进行调用,注意它持有presenter的引用。