Android中MVC的应用

作者: 猪爸爸Hulk | 来源:发表于2017-10-28 17:17 被阅读107次

    初识MVC

    MVC:M-Model-模型、V-View-视图、C-Controller-控制器

    M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。

    V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。

    C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,Activity读取V视图层用户输入的数据,控制用户输入,并向Model发送数据请求。

    View:对应于布局文件
    Model:业务逻辑和实体模型
    Controllor:对应于Activity

    MVC项目结构

    QQ截图20171028161820.png

    M-Model-模型、V-View-视图、C-Controller-控制器

    首先,实体类User
    public class User {
        private String user;
        private String pwd;
    
        public User(String user, String pwd) {
            this.user = user;
            this.pwd = pwd;
        }
    
        public String getUser() {
            return user;
        }
    
        public void setUser(String user) {
            this.user = user;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    }
    
    IUserModel
    public interface IUserModel {
        void login(String user, String pwd, OnLoginListener loginListener);
    }
    
    OnLoginListener
    public interface OnLoginListener {
        void onSuccess(User user);
    
        void onFailed();
    }
    
    UserModel
    public class UserModel implements IUserModel {
        @Override
        public void login(String name, String pwd, OnLoginListener listener) {
            if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
                return;
            }
            if ("wanghao".equals(name) && "123".equals(pwd)) {
                listener.onSuccess(new User(name, pwd));
            }else {
                listener.onFailed();
            }
        }
    }
    
    MainActivity
    public class MainActivity extends AppCompatActivity implements OnLoginListener {
    
        private EditText et_user;
        private EditText et_pwd;
        private Button bt_login;
        private UserModel userModel;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            userModel = new UserModel();
    
            initView();
        }
    
        private void initView() {
            et_user = (EditText) findViewById(R.id.et_user);
            et_pwd = (EditText) findViewById(R.id.et_pwd);
            bt_login = (Button) findViewById(R.id.bt_login);
            bt_login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    userModel.login(et_user.getText().toString(), et_pwd.getText().toString(), MainActivity.this);
                }
            });
        }
    
        @Override
        public void onSuccess(User user) {
            Toast.makeText(MainActivity.this, "欢迎" + user.getUser(), Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onFailed() {
            Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
        }
    }
    

    最后

    个人理解,有什么不对的地方还请各位大神指正。

    相关链接

    Android中MVC的应用
    Android中MVP的应用

    相关文章

      网友评论

        本文标题:Android中MVC的应用

        本文链接:https://www.haomeiwen.com/subject/qujspxtx.html