zoukankan      html  css  js  c++  java
  • Android 知识杂记(MVP模式)

    MVP的模式在于将原来activity中业务逻辑的部分剥离出来,代码示例如下:

    • Account
    public class Account {
        
        private String mUsername;
        private String mPassword;
            
        public String getmUsername() {
            return mUsername;
        }
        public void setmUsername(String mUsername) {
            this.mUsername = mUsername;
        }
        public String getmPassword() {
            return mPassword;
        }
        public void setmPassword(String mPassword) {
            this.mPassword = mPassword;
        }
    }
    • IAccountModel
    public interface IAccountModel {
        
        void setAccount(String username, String password);
        Account getAccount();
    }
    • AccountModel
    public class AccountModel implements IAccountModel {
        
        private Account mAccount;
        
        public AccountModel(){
            mAccount = new Account();
        }
    
        @Override
        public void setAccount(String username, String password) {
            mAccount.setmUsername(username);
            mAccount.setmPassword(password);        
        }
    
        @Override
        public Account getAccount() {
            return mAccount;
        }
    }
    • AccountPresenter
    public class AccountPresenter {
        private IAccountModel mAccountModel;
        private IAccountView mAccountView;
        
        //view的实现还是在activity中
        public AccountPresenter(IAccountView view){
            mAccountView = view;
            mAccountModel = new AccountModel();
        }
        
        //初始化账号显示,该业务逻辑被封装在presenter中
        public void initAccount(String username, String password){
            mAccountModel.setAccount(username, password);
            mAccountView.setUsernameEdit(mAccountModel.getAccount().getmUsername());
            mAccountView.setPasswordEdit(mAccountModel.getAccount().getmPassword());
        }
    }
    •  IAccountView
    public interface IAccountView {
        public void setUsernameEdit(String username);
        public void setPasswordEdit(String password);
    }
    • MainActivity
    public class MainActivity extends Activity implements IAccountView{
        
        private EditText mUsername;
        private EditText mPassword;
        private AccountPresenter mAccountPresenter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mUsername = (EditText) findViewById(R.id.username);
            mPassword = (EditText) findViewById(R.id.password);
            
            mAccountPresenter = new AccountPresenter(this);
            mAccountPresenter.initAccount("fredric", "fredricpassword");
        }
    
        @Override
        public void setUsernameEdit(String username) {
            mUsername.setText(username);
        }
    
        @Override
        public void setPasswordEdit(String password) {
            mPassword.setText(password);
        }    
    }
  • 相关阅读:
    Jconsole连接远程服务器
    limesurvey设置短调查问卷url
    centos7 安装R和Rstudio客户端
    p便签,去掉首行缩进
    linux mint运行docker
    Kafka高可用实现
    利用ZooKeeper简单实现分布式锁
    如何判断一个数是否在40亿个整数中?
    稀疏矩阵乘法
    Java 软引用和弱引用
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/5220657.html
Copyright © 2011-2022 走看看