Android mvp
来源:互联网 发布:编译php扩展 编辑:程序博客网 时间:2024/05/17 22:17
当下mvp开发模式较流行,那咱们要跟上时代的步伐!之前一直用的是MVC开发模式,那到底有哪点不同那呢,让我们一起来看看。
mvc模式:
mvp模式:
看着这两张图你会发现,其实就是让activity不在做控制层了,我们知道,mvc最大的麻烦是可能造成Activity过于冗余。
但mvp成功的解决了这个问题。
下面我们就以一个小例子为例:
1.先看看这个架构:
2.一步步解析:
(1)IEpilogizeView 接口用于与Presenter经行交互。
public interface IEpilogizeView {
//获取输入的信息String getEditTextInfo();//获取返回结果void dataResult(String text);
}
(2)EpliogizePresenter 充当控制层,IAddEpliogizp 为model层与presenter的交互接口
public class EpliogizePresenter implements IAddEpliogizp {
private IEpilogizeView iEpilogizeView;private AddEpliogzipCompl addEpliogzipCompl;public EpliogizePresenter(IEpilogizeView iEpilogizeView){ this.iEpilogizeView=iEpilogizeView; addEpliogzipCompl=new AddEpliogzipCompl(this);}//业务操作public void addEpilogize(){ //假如这里需要进行复杂的逻辑运算,就需要在modle层进行操作 addEpliogzipCompl.getParameters(iEpilogizeView.getEditTextInfo());}@Overridepublic void getResult(String string) { //从model获取结果,再通过view接口改变布局 iEpilogizeView.dataResult(string);}
}
(3)IAddEpliogizp 为model层与presenter的交互接口
public interface IAddEpliogizp {
//经过复杂逻辑运算所得结果void getResult(String string);
}
(4)Model处理业务逻辑实例
public class AddEpliogzipCompl {
private IAddEpliogizp iAddEpliogizp;public AddEpliogzipCompl(IAddEpliogizp iAddEpliogizp){ this.iAddEpliogizp=iAddEpliogizp;}public void getParameters(String string) { String str=string+"LOVE"; iAddEpliogizp.getResult(str);}
}
(5)MainActivity 的实现
public class MainActivity extends Activity implements View.OnClickListener,IEpilogizeView{
private EditText editText;private Button button;private EpliogizePresenter epliogizePresenter;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); epliogizePresenter=new EpliogizePresenter(this); //初始化控件 initControl();}private void initControl(){ editText=getView(R.id.edit); button=getView(R.id.button); button.setOnClickListener(this);}@Overridepublic void onClick(View v) { switch (v.getId()){ case R.id.button: //把所有操作交给presenter epliogizePresenter.addEpilogize(); break; }}@Overridepublic String getEditTextInfo() { return editText.getText().toString().trim();}@Overridepublic void dataResult(String text) { editText.setText(text);}private <T extends View> T getView(int id){ T result= (T) findViewById(id); return result;}
}
1 0
- android MVP
- android mvp
- android MVP
- Android MVP
- Android MVP
- android MVP
- Android MVP
- Android MVP
- Android mvp
- android MVP
- android mvp
- Android MVP
- Android MVP
- Android MVP
- Android MVP
- Android MVP
- Android MVP
- Android mvp
- 1103
- TypeHandler的实例...
- 基于MeanShift的目标跟踪算法及实现
- 一起来写web server 04 -- 线程池版本
- 39级台阶
- Android mvp
- LeetCode学习篇十八——Best Time to Buy and Sell Stock with Cooldown
- hdu_1671 Phone List(字典树)
- php 语法风格切换 自学第1天
- UE4 粒子系统问题 no fixed bounding box
- 停止win10自动更新
- 网易2017实习生笔试7
- 硬盘模式IDE和AHCI
- linux笔记