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);
        }    
    }
  • 相关阅读:
    怎么把共享文件夹显示在我的电脑
    window时间同步机制的简单介绍
    向指定服务器的指定端口发送UDP包
    窜口通信-读取时间码
    窜口通信-发送时间码
    回环网卡通信
    简单的TCP接受在转发到客户端的套接口
    国内能用的NTP服务器及和标准源的偏差值
    简单的UDP接受程序
    TCP包服务器接受程序
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/5220657.html
Copyright © 2011-2022 走看看