两幅图带你理解android MVP

来源:互联网 发布:知柏地黄丸能治耳鸣吗 编辑:程序博客网 时间:2024/06/05 03:02

很早就知道android 除了个MVP这种设计模式了,但是一直没用过,因为之前觉得把网络层封装一下,在activity里面直接用接口回调就可以了。但是最近发现,这样完全不行啊,随着业务逻辑的增多,一个activity很容易就有上千行代码,自己写的还好,别人看绝对是云里雾里的,这里对数据操作,那里对界面操作,这里一坨代码,那里一坨代码。所以网上搜了下关于android MVP的文章,收获颇丰,果然用了MVP就是不一样,虽然多了很多类,但是项目的分层特别清晰,看着很爽。

接下来总结下我对MVP的理解吧:

简单来说,MVP就是对接口的操作。M、V、P每一层都会有一个接口,一个实现类。在V中,有P的接口对象;在P中,有M、V的接口对象。

V:

V层一般都是activity,fragment。接口里面定义所有的操作界面的方法,比如弹出Toast啊,弹出Dialog啊,改变某些控件的布局啊。

P:

接口里定义一些中间层的方法,比如说登录,注册等。当V层调用P层的登录后,P层就会调用M层的登录。

M:

这一层就是具体的对数据的操作。

看图说话

这里写图片描述

登录业务的MVP模拟图:

这里写图片描述

1、点击button后,在V层中也就是activity中执行login方法;
2、然后在login方法中调用P层中的login方法;
3、P层在调用M层中的login方法,并且带入一个Callback回调接口进去;
4、M层对数据进行操作后或者进行网络请求后,对返回的结果进行解析,成功的话就调用Callback的onSuccess方法,否则调用Callback的onFail方法;
5、在P层接收到了回调,如果是onSuccess的话就调用activity的onLoginSuccess方法,如果是onFail就调用activity的onLoginfail方法。

具体可以看我写的一个小Demo:

MVPDemo

原创粉丝点击