浅谈Android Mvp模式开发及个人理解
2018-07-18 23:01
78 查看
MVP:Model View Present。
前言:抱着最起码的要求尽力去做好每一件事 ——秋不白
终于理解了MVP,给大伙分享下,大神勿喷,小白专用。第一次写博客好紧张,怎么样才能表现出经常写博客的样子,各位老铁。
[code]* Model: 处理数据 * View : 显示数据(Activity或Fragment) * Present: 连接Model层和View层
[code]* Mvp 框架个人理解 * 1. 由View层发起请求(就是在View层里面 调用present.getData() 方法啦,说的这么高端) * 2. 在present.getData()方法里面,调用Model.getData()去执行数据请求,(就是所谓的 由Present层传递请求给Model层) * 3. 然后,present回传请求数据结果(成功就显示数据,失败就提示失败)
下面直接看代码
第一步,创建一个接口,具备两个功能,一个是请求数据,一个是回传数据
[code]/** * 回调接口 * Created by yinsxi on 2018/7/18. */ public interface MvpContact { interface Present{ /** * 获取数据 */ void getData(); } interface View{ /** * 展示数据 */ void showData(); /** * 展示错误数据 */ void showError(); } }
第二步
还是一个接口,用来请求数据时,失败或成功的回调
[code]/** * 请求数据 回调 * Created by yinsxi on 2018/7/18. */ public interface GetDataListenser { void onFailed(); void onSuccess(); }
第三步
编写你的数据请求类,也就是Model层,处理数据的
[code]/** * Created by yinsxi on 2018/7/18. */ public class MvpModel { public void getData(GetDataListenser listenser){ /** * 具体执行业务代码 * 此处省略一百行代码 * */ /** * 根据最后请求结果 * 失败或成功回调 */ listenser.onFailed(); listenser.onSuccess(); } }
第四步
编写Present层,用来传递请求数据,和回传数据
[code]/** * Mvp 中的 Present层, 连接View层和Model层 * 1. 传递数据请求 * 2. 回传 数据请求结果及数据 * Created by yinsxi on 2018/7/18. */ public class MvpPresent implements MvpContact.Present{ MvpContact.View view; MvpModel model; public MvpPresent(MvpContact.View view) { this.view = view; model = new MvpModel(); } /** * 中间层传递请求 */ @Override public void getData() { model.getData(new GetDataListenser() { @Override public void onFailed() { view.showError(); } @Override public void onSuccess() { view.showData(); } }); } }
到这里基本完成简易MVP框架了,看看Activity如何使用,相信你应该知道了
[code]public class MainActivity extends AppCompatActivity implements MvpContact.View{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 Mvp 中的Present层 MvpPresent mvpPresent = new MvpPresent(this); //由View层发起请求 mvpPresent.getData(); } @Override public void showData() { } @Override public void showError() { } }
最后仅个人理解,可能存在失误:
[code]* 不必太过于在意是什么框架mvp mvc,框架再怎么变,也离不开,最根本的设计,就是封装。 * 一个数据请求当然是放到单独一个类里面去执行,作为activty只需要这个类回传结果,失败或成功。 * 当然了,遵循框架,有利于后期维护,一句话,写出机器能懂得代码很简单,写出人能看懂的代码就很难,这是我兄dei佑哥对我说的 * 这要是衍生出各种框架的原因。
相关文章推荐
- android应用开发存储方式之SQLite(android自带的数据库)的一些个人理解
- Android开发:浅谈MVP模式应用与内存泄漏
- 浅谈Android应用开发中一些概念的理解
- 浅谈android开发中的MVP模式
- Android整合网上资源以及个人对GreenDao数据库框架的理解与使用(android-studio开发)
- Android开发:浅谈MVP模式应用与内存泄漏
- Android开发:浅谈MVP模式应用与内存泄漏问题解决
- [置顶] android 插件化开发(个人理解入门)
- 浅谈Android系统开发中一些概念的理解
- Android开发:浅谈MVP模式应用与内存泄漏
- android开发之常用命令(个人常用)
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
- android游戏开发浅谈
- 分享8年开发经验浅谈个人发展经历
- Android AIDL 理解及开发要点
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
- Android开发学习笔记:浅谈ListView
- android 电池管理之个人理解
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向