Android:MVP模式
来源:互联网 发布:shake it off动作数据 编辑:程序博客网 时间:2024/05/17 22:53
Android MVP分析:
1、MVP:
- M-model,即javaBean 数据模型层;
- V-view,视图层,常用的即Activity Fragment,这里是定义一个接口IView,Activity去实现IView的写法;
- P-presenter,数据处理层,所有的数据逻辑,业务逻辑都在这里处理;
3、分析:
首先先看model文件:
public class StudentInfo { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}这里包含了一个对象的基本信息。
接着api文件,里面放的是api接口。更能直接明了的看到View和Presenter之间的方法。
先看看两个基类:
IBaseAPI:
IBasePresenter:/** * Created by GR on 2017/2/27. * 功能:设置当前主体 */public interface IBaseAPI<T> { void setPresenter(T presenter);}
/** * Created by GR on 2017/2/27. * 功能:约定了所有Presenter的初始化操作都放在start()方法中 */public interface IBasePresenter { void start();}
IStudentInfo:
public interface IStudentInfo { //对UI进行操作 interface IView extends IBaseAPI<IPresenter>{ void showDialog(); //显示窗口 void closeDialog(); //关闭窗口 String studentName();//假设获取学生名字 void call(StudentInfo studentInfo);//获取学生信息后回调 } //对数据的业务逻辑进行操作 interface IPresenter extends IBasePresenter{ void loadStudentInfo(); }}
内部有2个接口,分别继承了IBaseAPI和IBasePresenter,IView和IPresenter中实现的方法分别是UI操作,和数据业务逻辑操作.
接下来看业务逻辑的具体操作:
StudentPresenter:
public class StudentPresenter implements IStudentInfo.IPresenter { private IStudentInfo.IView mIview; public StudentPresenter(IStudentInfo.IView iview) { mIview = iview; mIview.setPresenter(this);//这里设置当前主体类 } @Override public void start() { loadStudentInfo(); } @Override public void loadStudentInfo() { final String name = mIview.studentName();//从外部获取学生信息名字 mIview.showDialog();//显示加载页面 //模仿网络请求 new Handler().postDelayed(new Runnable() { @Override public void run() { StudentInfo studentInfo = new StudentInfo();//创建学生信息 studentInfo.setName(name); studentInfo.setAge("18岁"); mIview.call(studentInfo);//获取到学生信息之后回调 mIview.closeDialog();//关闭弹窗 } },2000);//延时2秒后进行 }}
1)构造函数中传入IStudentInfo.IView,并且调用IBaseAPI的setPresenter()方法;
2)将所有的初始化操作都放在start()方法中(这里demo只有一个:网络请求获取用户信息),这样只要进入界面的时候调用start()方法就可以执行一系列初始化的操作,这就相当于一种约定好的开发。
最后看一下Activity界面:
public class StudentMainActivity extends AppCompatActivity implements IStudentInfo.IView { private IStudentInfo.IPresenter mPresenter; private ProgressDialog mDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new StudentPresenter(this); mPresenter.start();//这里直接调用start()方法,是因为在new StudentPresenter(this)中,activity已经回调过setPresenter方法,对mPresenter进行了初始化。 } @Override public void showDialog() { mDialog = new ProgressDialog(this); mDialog.setMessage("正在加载..."); mDialog.show(); } @Override public void closeDialog() { mDialog.dismiss(); Toast.makeText(this, "加载完成", Toast.LENGTH_LONG).show(); } @Override public String studentName() { return "小三,嘎嘎"; } @Override public void call(StudentInfo studentInfo) { if (null != studentInfo) { Toast.makeText(this, "姓名:" + studentInfo.getName() + "\n年龄:" + studentInfo.getAge(), Toast.LENGTH_LONG).show(); } } @Override public void setPresenter(IStudentInfo.IPresenter presenter) { mPresenter = presenter; }}ok,mvp理解到这儿,自己做个小记录。
最后附上几张测试图片:
0 0
- Android MVP开发模式
- android中MVP模式
- android中MVP模式
- MVP模式in Android
- android mvp模式
- MVP模式 Android
- android中MVP模式
- Android MVP模式实践
- Android MVP模式
- 31.Android MVP模式
- android中的MVP模式
- Android MVP模式
- android中的MVP模式
- Android MVP模式
- Android--MVP模式--简介
- Android MVP模式
- Android 中的MVP模式
- Android:MVP模式
- 天将 转:值得推荐的C/C++框架和库(真的很强大)
- VS2015配置PCL1.8.0详细教程
- spring中的事务控制
- 微信小程序案例 大全
- openfire--好友管理各种状态纠结
- Android:MVP模式
- Git使用命令
- jQuery 防止相同的事件快速重复触发
- 【Swift 3.0】objc 翻译成Swift 3.0
- Java Thread 异常情况分析
- 01背包
- Linux进程间关系之守护进程
- ShardedJedis的一致性hash
- android:exported使用