烦了在Activity中编写太多的代码,该app由我来主导。就选择用MVP模式。
概述
MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。
模型(Model)
负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;
视图(View)
负责界面数据的展示,与用户进行交互;
主持人(Presenter)
相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。
如上图所示,View与Model并不直接交互,而是使用Presenter作为View与Model之间的桥梁。
其中Presenter中同时持有Viwe层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。
当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层
请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,
最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是MVP模式的整个核心过程。
结合demo的示意图
图片放大看
这样分层的好处就是大大减少了Model与View层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面Model层可以封装复用,可以极大的减少代码量。
技巧
先确定Presenter类的方法,再推出view和model的方法。
步骤:
1、从页面功能按钮分析得出:
a)登录功能。b)清除功能。
2、Presenter类就有了
login() 和 clear() 方法。
3、login()需要用户名和密码。则IView接口有了
a)getUserName()
b)getpawd()
c)showprocess() 显示进度条
d)显示登录结果,等等的方法
依次类推,把IView和IMode的方法推出来。