Android MVP架构

Android 架构的理解昨天看了Android框架模式(1)-MVP入门,感觉理解起来有点困难,我就重新把java回调重新理解了一遍,并写了一篇博客,有需要的朋友可以看一看,java回调机制,下面我再来按照我的理解来写mvp架构是怎么样的。

其实MVP就是一个变种的MVC架构,把activity和前端的xml文件,一起当成了View层,把获取数据封装成对象,当做Model层,把从Model层获取数据交给View层,当成了Presenter层。

解决的问题就是把原来什么代码都往activity写的混乱不清的框架理顺,按照三层架构的思想,结合Android本身的特点,搞出了一个MVP框架。

结合我的上篇博客,java回调机制,我们可以把作业理解为View,把圆圆小姐姐理解为Model,把我理解为Presenter,从Model层获取数据显示到View层就是要解决的问题,就是CallBack接口。

不知从什么时候开始,写代码就先写接口了,理顺思路之后,先写一堆接口。

先写CallBack

/**
 * Created by chensc on 2018/1/5.
 */

public interface ICallBack {
    void onResult(String data);
}
再写三层的接口

/**
 * Created by chensc on 2018/1/4.
 */

public interface IView {
    void setData(String data);
}
/**
 * Created by chensc on 2018/1/4.
 */

public interface IModel {
    void getData(ICallBack callback);
}
/**
 * Created by chensc on 2018/1/4.
 */

public interface IPresenter {
    void onCreate();
    void performOnClick();
}
然后就是三个三层接口的实现类,CallBack由“我”来实现,也就是用 Presenter实现CallBack接口,被“圆圆小姐姐调用”,也就是Model调用,由圆圆小姐姐打电话回来后,我来完成作业。

public class MainActivity extends AppCompatActivity implements IView {

    private TextView tvHello;

    @Override
    public void setData(final String data) {
        MainActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                tvHello.setText(data);
            }
        });
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvHello = (TextView) findViewById(R.id.hello);
        Button btn= (Button) findViewById(R.id.btn);
        final Presenter presenter=new Presenter(this);
        presenter.onCreate();
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                presenter.performOnClick();
            }
        });
    }
}

/**
 * Created by chensc on 2018/1/4.
 */

public class Model implements IModel {

    @Override
    public void getData(final ICallBack callback) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                callback.onResult("第一个回调函数");
            }
        }).start();
    }
}

/**
 * Created by chensc on 2018/1/4.
 */

public class Presenter implements IPresenter,ICallBack {
    private IView tview;
    private IModel tModel;
    public Presenter(IView tview){
        this.tview=tview;
        tModel=new Model();
    }

    @Override
    public void onCreate() {

    }

    @Override
    public void performOnClick() {
        tModel.getData(this);
    }

    @Override
    public void onResult(String data) {
        tview.setData(data);
    }
}
最后再把所有代码上传一下。

demo下载








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值