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);
        }    
    }
  • 相关阅读:
    如何选择机器学习算法 转
    机器学习经典算法详解及Python实现--基于SMO的SVM分类器
    机器学习(Machine Learning)&深度学习(Deep Learning)资料
    计算智能在设备状态维护中的应用
    LaTeX 在编译时出现 File ended while scanning use of @writefile错误
    LaTeX 中插入图片使其紧跟插入的文字之后
    LaTeX 制作表格
    LaTeX 中换段落
    LaTeX 中使用三级标题
    使用 WinEdt 来写中文文章or 建模论文
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/5220657.html
Copyright © 2011-2022 走看看