小试牛刀MVP模式的运用
来源:互联网 发布:淘宝兼职广告语大全集 编辑:程序博客网 时间:2024/04/28 18:05
MVP模式也就是:model-处理业务逻辑,其实就是数据的读写,view-处理ui控件,也就是显示,presenter-主导器 用于操作model和view。
通过网上简单的例子后,我也决定把mvp引用到项目中来,通过实践发现 ,mvp模式,其实是降低了activity或fragment的代码压力,不至于在activity或fragment中即实现了ui,又给ui赋值,使代码解耦度高。
我也在项目里的登入界面中简单的运用一下MVP:
首先我先讲一下以前是如何做的:
protected void onCreate(Bundle savedInstanceState){EditTextmEtAccount = (EditText) findViewById(R.id.et_account);EditTextmEtPSW = (EditText) findViewById(R.id.et_psw);//通过SharedPreferences获取账号或密码mEtAccount.setText(PreferencesHelper.getUserLogin(PreferencesHelper.KEY_LOGIN_PHONE));mEtPSW.setText(PreferencesHelper.getUserLogin(PreferencesHelper.KEY_LOGIN_PWD));}/***调用登入接口*/private void login() {//这里我就不写了,主要是通过账号和密码调用后台登入账号,进行登入。//在登入成功的地方 通过SharedPreferences保存账号和密码PreferencesHelper.saveLoginInfo(account, psw);}
下面是我通过网上的mvp例子来写这个地方
1.创建一个bean也就是usename和password
public class UserBean {private String userName;private String password;public UserBean() {super();}public UserBean(String userName, String password) {super();this.userName = userName;this.password = password;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}2.创建接口IUserModel:这个就是mvp中model,用于存放和获取账号和密码
public interface IUserModel {void setUserName(String userName);void setPassword(String password);UserBean load();}3.创建类UserModel:用来实现IUserModel,在这个类里面 实现load()方法是用于保存数据
public class UserModel implements IUserModel{@Overridepublic void setUserName(String userName) {}@Overridepublic void setPassword(String password) {}@Overridepublic UserBean load() {//这个地方我是通过获取账号和密码,如果有需要也可以通过网络或数据库获取数据放入bean中String userName=PreferencesHelper.getUserLogin(PreferencesHelper.KEY_LOGIN_PHONE);String password=PreferencesHelper.getUserLogin(PreferencesHelper.KEY_LOGIN_PWD);return new UserBean(userName, password);}}4.创建接口IUserView :这个就是mvp中的view,用于对账号和密码这两个edittext进行读操作和写操作
public interface IUserView {void setUserName(String userName);void setPassword(String password);String getUserName();String getPassword();}5.创建类UserPresenter:这个就是mvp中的presenter,用于操作model和view
public class UserPresenter {private IUserModel iUserModel;private IUserView iUserView;public UserPresenter(IUserView iUserView) {super();this.iUserModel = new UserModel();this.iUserView = iUserView;}public void saveUser(String userName,String password){//这个地方是用SharedPreferences保存账号和密码PreferencesHelper.saveLoginInfo(userName, password);iUserModel.setUserName(userName);iUserModel.setPassword(password);}public void loadUser(){//这个地方是获取保存的账号和密码UserBean bean=iUserModel.load();iUserView.setUserName(bean.getUserName());iUserView.setPassword(bean.getPassword());}}6,然后在activity中运用mvp:
public class LoginActivity extends BaseAct implements IUserView{//这地方要实现IUserView接口protected void onCreate(Bundle savedInstanceState) {EditText mEtAccount = (EditText) findViewById(R.id.et_account);EditText mEtPSW = (EditText) findViewById(R.id.et_psw);presenter=new UserPresenter(this);presenter.loadUser();}private void login(){presenter.saveUser(account, psw);//登入成功后保存账号和密码}@Overridepublic void setUserName(String userName) {mEtAccount.setText(userName);}@Overridepublic void setPassword(String password) {mEtPSW.setText(password);}@Overridepublic String getUserName() {return mEtAccount.getText().toString();}@Overridepublic String getPassword() {return mEtPSW.getText().toString();}}activity中的代码只是片段,主要是几点是实现IUserView接口,初始化UserPresenter,然后在显示值得地方调用loadUser(),在保存的地方调saveUser()方法,最后在实现的方法中将值放入两个editText中就行了。
mvp这只是初次尝试比普通的的开发和mvc还是先进很多,唯一的缺点就是代码量增加了,就为了那几行代码,就创建了5个java文件,不过 在它的优点面前,这点缺点还是可以容忍的,这次只是简单的运用, 下一步我要尝试从服务端获取集合的数据如何用mvp模式做。
0 0
- 小试牛刀MVP模式的运用
- Android中的MVC、MVP、MVVM模式的运用
- Android中MVC、MVP、MVVM模式的运用
- Android中MVC、MVP、MVVM模式的运用 (续)
- Android 开发模式MVP模式简单运用
- MVP模式的详解
- MVP模式的优缺点
- Android的MVP模式
- Android的MVP模式
- Android的MVP模式
- MVP模式的学习
- MVP模式的优缺点
- Android的MVP模式
- MVP模式的入门
- MVP模式的理解
- mvp模式的登陆
- andorid 中 MVP模式 个人理解与运用
- MVP和MVC模式解读与实战运用(一)
- 枚举类型小例子
- dubbo服务的telnet命令
- Cordova 打包 Android release app 过程详解
- 剑指offer面试题31、34、36、38
- 安装、备份、还原mongodb
- 小试牛刀MVP模式的运用
- 二元多项式
- 巧用cssText属性批量操作样式
- Java注释@interface的用法
- POJ 1308(简单并查集)
- Android 5.1.1 状态栏裁剪以及点击状态栏的事件监听裁剪
- iOS学习 应用程序对象介绍AppDelegate 信息提醒
- M - Tunnel Warfare
- EditTexit只输入数字 android:digits 与始终隐藏软键盘setInputType冲突解决