android小白进阶MVP模式开发(三步曲),让你全面理解MVP进阶(二)
来源:互联网 发布:kali linux配置ip地址 编辑:程序博客网 时间:2024/05/16 04:20
上一篇 我已经讲过mvc mvp 以及对比,写的有点累了,但你们就是我的红牛,我的体质能量,我的加多宝,要是女的的话也是可以是我的女朋友,但请你记住,我从不搞基,从不...
Follow Me:
如果仔细看完我上一篇文章的,特别注意下我用“#########” 来区别上一篇剥离出去的Modle
Start:代码来了
I(桥梁):
package com.example.bandofbrotherszts.ztsmvpdemostep1.cantract;/** * Created by BandOfBrothersZTS on 2017/8/22. */public interface LoginInterface { /** ################# * 为桥梁添加Model */ interface Model{ String getData(); } /** * 接口View “即Activity(Fragment)的所实现类“ */ interface View{ //setData方法是为了 Activity实现View接口之后 重载这个方法就可以直接拿到str 给TextView赋值 void setData(String str); }; /** * 接口Presenter 是LoginPresenter的所实现类 */ interface Presenter{ //我们所要做的就是 给一个TextView 赋值,所以Presenter 中需要有一个方法loadData() // 调用 model的网络请求 void loadData(); }; /** * 温馨提示 :你也可以吧interface Presenter{} 抽象接口换成 abstract class Presenter{} * 这样的话Presenter 是LoginPresenter的父类 LoginPresenter extends Presenter 即可 * 但是本着“单继承,多实现的原则” 我还是喜欢实现 因为你可能还有别的基类对不对 */ //TODO 不要问我mvp模式 m层在哪 不要忘了咱们第一步曲 是把m层剥离出去了 //TODO 但是这并不影响, 因为Model 是通过Presenter来调用的 看看mvc和mvp的对比图就明白了 //TODO 所以第一步曲的特点在于: 通过Presenter 来直接调用静态类 进行异步请求}
P:
package com.example.bandofbrotherszts.ztsmvpdemostep1.presenter;import com.example.bandofbrotherszts.ztsmvpdemostep1.cantract.LoginInterface;import com.example.bandofbrotherszts.ztsmvpdemostep1.model.LoginModel;/** *Created by BandOfBrothersZTS on 2017/8/22. */public class LoginPresenter implements LoginInterface.Presenter{ /** *View 和 Presenter 是互通的 所以我要通过构造的方式拿到View * 拿到View Presenter就可以调用View中的方法了 * 嘿嘿,我又污了(拿到房卡 我就可以对里面姑娘为所欲为了!!!) */private LoginInterface.View view; /**########### Presenter 传递信息给Model 所以要拿到它的实例 * 我直接在presenter 中实例化的 你也可以在Activity实例化,然后通过构造传过来 */ private LoginInterface.Model model; public LoginPresenter(LoginInterface.View view) { this.view = view; this.model = new LoginModel(); } /**########### 通过Model 拿到数据 * 然后通知view层 */ @Override public void loadData() { String str = model.getData(); view.setData(str); }}
M:package com.example.bandofbrotherszts.ztsmvpdemostep1.model;import com.example.bandofbrotherszts.ztsmvpdemostep1.cantract.LoginInterface;/** * Created by BandOfBrothersZTS on 2017/8/22. * #############getData()不是静态调用了,是重写方法了 */public class LoginModel implements LoginInterface.Model{ /** * 很简单就是网络强求数据,我比较懒所以我伪造一下数据 */ public String getData(){ return "我是伪造的网络请求数据"; };}
V:
package com.example.bandofbrotherszts.ztsmvpdemostep1.activity;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;import com.example.bandofbrotherszts.ztsmvpdemostep1.R;import com.example.bandofbrotherszts.ztsmvpdemostep1.cantract.LoginInterface;import com.example.bandofbrotherszts.ztsmvpdemostep1.presenter.LoginPresenter;/** * Created by BandOfBrothersZTS on 2017/8/22. */public class LoginActivity extends AppCompatActivity implements LoginInterface.View { private LoginInterface.Presenter mPresenter; private TextView dataTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initView(); /** * 注意了:::::::::::: * 向下转型 实例化LoginPresenter * 为什么这么写? 因为LoginInterface才是桥梁!!! */ mPresenter = new LoginPresenter(this); } private void initView() { dataTv = (TextView) findViewById(R.id.data_tv); dataTv.setOnClickListener(new View.OnClickListener() {//点击请求数据 @Override public void onClick(View v) { mPresenter.loadData(); } }); } @Override public void setData(String str) { dataTv.setText(str); }}
END:
总结: 每个人都有自己的mvp,你的参阅让我倍感荣幸,希望你也能找到自己的mvp,如需帮助,或有志同道合者想一起进步的,加qq群:659014357
最后我附上github源码连接 :MVP(二)源码
阅读全文
1 0
- android小白进阶MVP模式开发(三步曲),让你全面理解MVP进阶(二)
- android小白进阶MVP模式开发(三步曲),让你全面理解MVP(一)
- Android框架模式(2)-MVP进阶
- Android MVP进阶:“修行在个人”
- Android进阶 MVP设计模式实例
- mvp进阶
- MVP模式优化与进阶
- 理解中Android的MVP开发模式~
- Android MVP开发模式
- android MVP 开发模式
- Android mvp开发模式
- Android 开发MVP模式
- Android mvp开发模式
- android mvp开发模式
- 【Android 进阶(一)】Android MVP框架实现过程
- 【Android 进阶】MVP 实战演练之深入浅出
- MVP+Databinding模式开发APP(二)
- 两幅图带你理解android MVP
- xgboost调参
- ROS回顾学习(1)-----catkin_make编译
- Selenium webdriver jar包下载指南
- C++类的实例化对象的大小之sizeof()
- Oracle存储过程和存储函数(1)
- android小白进阶MVP模式开发(三步曲),让你全面理解MVP进阶(二)
- Keil 按下Build编译全部文件的原因
- 免费馅饼(简单DP
- 排序算法(3)----归并排序
- 【Spring Boot实战】一 -- 简单了解Spring Boot
- 图像分类——细粒度的概念
- 线性非线性光耦 传输特性
- JVM-栈帧
- Vue 中$els 的用法和理解