您的位置:首页 > 移动开发 > Android开发

Android MVP学习笔记

2017-11-10 11:12 239 查看

MVP很简单,敲一遍代码就会:

一, 怎么来理解MVP

M:model

V:View

P : Presenter

基本上介绍MVP的都会介绍每个字母代表什么。对于刚接触MVP的童鞋来说,其实从最简单的来理解就行了(深层次我也不理解 哈哈 ):

M:数据

V:主要是将Activity或Fragment视为View层 负责数据的展示

P : Presenter 业务逻辑的处理

二、代码:

看什么关系图啊,越看越晕,看代码最实际,代码敲一边不理解起码也能先用着:

首先我们需要BaseView和BasePresenter;



BaseView和BasePresenter是两个接口里面代码很简单:





下面我们设计业务场景:点击按钮在TextView上显示文字。。

Step1

创建契约类MVPContact.class



Step2

创建MVPPresenter

public class MVPPresenter implements MVPContact.Presenter {
private MVPContact.View mView;

public MVPPresenter(MVPContact.View mView) {
this.mView = mView;
mView.setPresenter(this);
}
@Override
public void get() {
mView.showMessage("哈哈哈");
}
@Override
public void start() {

}

@Override
public void subscribe() {

}

@Override
public void unsubscribe() {

}
}


Step3

创建Activity并实现MVPContact.View

public class MvpActivity extends Activity implements MVPContact.View{
@BindView(R.id.btn_get)
Button btnGet;
@BindView(R.id.tv_show)
TextView tvShow;
private MVPContact.Presenter mPresenter;
@Override
public void setPresenter(MVPContact.Presenter presenter) {
this.mPresenter = presenter;
}

@Override
public void showMessage(String message) {
tvShow.setText(message);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mvp);
init();
}

private void init() {
ButterKnife.bind(this);
mPresenter = new MVPPresenter(this);
}

@OnClick({
R.id.btn_get
})
public void click(View view){
switch (view.getId()){
case R.id.btn_get:
mPresenter.get();
break;
}
}
}


大功告成!

总结:

这是一个简单的DEMO,是不是觉得本来一句代码tv.setText()就搞定的问题,为什么弄的这么复杂?

我们多创建了Contact、BaseView、BasePresenter、MVPPresenter四个类。确实增加了代码量,但同时,我们将业务逻辑的处理都放在了Presenter中,Activity视作View层只负责数据的展示,提高了代码的可维护性。试想如果不是简单的一个功能,而是非常多的网络请求、读取数据库、计算等业务,我们可以在Presenter中很方便的去进行维护,而不是看着臃肿的Activity欲哭无泪。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android mvp 学习 代码