Android MVC模式

2020-11-25  本文已影响0人  code希必地

1、MVC简介

MVC是Model-View-Controller的简称,即模型层-视图层-控制层。按照这种设计我们可以将业务逻辑、视图显示以及数据层面的代码进行分离。下面说下MVC在Android中对应的角色:

2、MVC在Android的使用

下面我们使用MVC来完成一个简单的登录功能。

Model层

/**
 * Model层 数据处理
 */
class LoginModel {

    fun login(userName: String, pwd: String, callBack: DataCallBack<AccountInfo>) {
        Handler().postDelayed({
            val isSuccess = Random.nextBoolean()
            if (isSuccess) {
                callBack.onSuccess(AccountInfo(userName, pwd))
            } else
                callBack.onFailure()
        }, 2000)
    }
}

Controller层

/**
 * Controller层
 */
class LoginActivity : AppCompatActivity() {
    private lateinit var model: LoginModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
        model = LoginModel()
        btn_login.setOnClickListener {
            val userName = getUserName()
            val pwd = getPwd()
            login(userName, pwd)
        }
    }


    /**
     * 处理用户点击 调用Model中的登录接口,并通过注册监听的方式
     * 来实现Model和View的通信
     */
    private fun login(userName: String, pwd: String) {
        model.login(userName, pwd, object : DataCallBack<AccountInfo> {
            override fun onSuccess(t: AccountInfo) {
                showSuccessView()
            }

            override fun onFailure() {
                showFailView()
            }

        })
    }

    /**
     * 以下几个方法是对View的操作
     */
    /**
     * 获取输入的用户
     */
    private fun getUserName(): String {
        return et_username.text.toString()
    }

    /**
     * 获取输入的密码
     */
    private fun getPwd(): String {
        return et_pwd.text.toString()
    }

    /**
     * 显示登陆成功的界面
     */
    private fun showSuccessView() {
        tv_result.text = "登陆成功"
    }

    /**
     * 显示登陆失败的界面
     */
    private fun showFailView() {
        tv_result.text = "登陆失败"
    }
}

从上面代码可以看出:

上一篇下一篇

猜你喜欢

热点阅读