MVP设计模式的应用
2015-07-29 01:59
337 查看
常常听说或是看到关于Java二十三种设计模式的研究或是介绍,但往往只是介绍了其核心思想,很少有具体实例来介绍的,所以本文就以实例介绍一下安卓MVP模式是如何应用的吧。
主要的三个类:
以上三个类即将原本全部写在Activity类中的代码分隔开来,从而实现了UI,业务逻辑,数据的分离,这样的代码更加规范便于理解,也便于工程的维护。以上或许有理解不当之处,欢迎指正!
主要的三个类:
[code]InforChangeActivity InforChangeView InforChangePresenter
一、InforChangeView
此类主要实现了页面所需相关数据的统一接口,以便于Presenter获取Activity中的数据(Activity类需要实现此接口,Presenter实例化时需要传入该接口的实例(即Activity中实现的))[code]public interface InforChangeView { public String getChangedData(); public int getFlag(); }
二、InforChangePresenter
此类主要用来进行网络访问、数据库操作等获取数据的相关操作。此类中的方法是Activity中通过该类的对象来访问的,同时此类可以使用InforChangeView的对象访问Activity中继承接口实现的方法来获取所需提交的数据。[code]public class InforChangePresenter { private Context context; private InforChangeView changeView; ........ /** 构造函数 */ public InforChangePresenter(Context context, InforChangeView changeView) { this.context = context; this.changeView = changeView; ......... } public boolean changeData() { // 网络或数据库操作,获取数据 ......... return result; } .......... /** * 提交更新的信息 * * @param uuir * @return */ public boolean postChangeData(UserUpdateInfoReqVO uuir) { ......... } }
三、InforChangeActivity
此类主要进行UI的更新等操作,继承View接口,使用Presenter获取及提交从UI得到的数据。[code]public class MyInforChangeActivity extends BaseActivity implements InforChangeView { private int flag;// 判断传入的界面 private Intent intent; private boolean result; private InforChangePresenter inforChangePresenter; ........ @ViewInject(R.id.edtTxt_myinfor_change) private EditText changeET; @ViewInject(R.id.iv_back) private ImageButton backBtn; @ViewInject(R.id.tv_finish) private TextView completeTV; @ViewInject(R.id.tv_title) private TextView titleTV; @OnClick(R.id.tv_finish) public void finish(View view) { ........ } @Override protected void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0); setContentView(R.layout.activity_myinfor_change); ViewUtils.inject(this); ....... initTitle(flag); init(); } private void init() { intent = new Intent(); /** 实例化Presenter对象*/ inforChangePresenter = new InforChangePresenter(this, this); ........ } private void initTitle(int i) { ........ } @Override public String getChangedData() { // TODO Auto-generated method stub return changeET.getText().toString().trim(); } @Override public int getFlag() { // TODO Auto-generated method stub return this.flag; } }
以上三个类即将原本全部写在Activity类中的代码分隔开来,从而实现了UI,业务逻辑,数据的分离,这样的代码更加规范便于理解,也便于工程的维护。以上或许有理解不当之处,欢迎指正!
相关文章推荐
- Android 官方命令深入分析之android
- Android 官方命令深入分析之android
- ubuntu mysql 无法启动 简单排查
- poj 3254 Corn Fields 【状压 DP 入门】
- 使用if语句和switch语句时,分号和变量作用域的问题总结
- Longest Valid Parentheses
- Uri获取文件路径
- [Liferay6.2]Liferay Dynamic Query API示例
- 远古守卫/cocos2d-x 源码/塔防游戏/高仿王国保卫战
- 数学函数类方法的使用.java
- HDU 5325 Crazy Bobo
- C++ outline and interview questions (3): Class
- Myeclipse的Project Developments里找不到Import的项目
- 封装 队列
- 数据结构
- 信息技术展望
- 解决方案debuggable
- 【OPENGL】第二篇 HELLO OPENGL(续)
- uva 227--模拟
- 【Tyvj】1473校门外的树3 线段树/树状数组 <区间修改+单点访问>