Android 为什么要使用 MVP 模式的接口?

Man*_*iri 6 android design-patterns kotlin android-mvp

我第一次使用MVP模式使用Kotlin制作Android应用程序。我的问题是,既然Kotlin提供了高阶函数,为什么还需要 View 和 Presenter 的接口?我们不能只使用那些高阶函数进行通信吗?使用没有接口的模式是不是很糟糕?

我已经查看并阅读了很多文章和教程,但没有回答我的问题。我在下面的代码中所做的事情是错误的做法吗?有人可以向我解释一下吗?

在我的活动中

override fun init() {

    btn_login.setOnClickListener {
        LoginPresenter.userLogin(et_emailAddress.text.toString(),et_password.text.toString()){
            if (it){
                //do something
            }else{
                //do something
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的演讲者

object LoginPresenter {

fun userLogin(emailId: String, password: String, completion: (Boolean) -> Unit) {
    //do something
    completion(true)
 }
}
Run Code Online (Sandbox Code Playgroud)

Oni*_*nik 1

Kotlin 提供了高阶函数,为什么我需要 View 和 Presenter 接口?

这是软件开发中相当常见的做法。虽然您可能不使用接口,但有许多关键点说明为什么接口更可取。我的头顶上浮现出:

  1. 使用接口,您可以拥有它的多个实现,而无需实际关心实现的具体类型。这就是高阶函数所缺少的 -LoginPresenter使用该方法时,您受到唯一类型 的限制LoginPresenter.userLogin()

  2. 大多数设计模式都是基于接口与其实现的分离。因此,对实现而不是抽象进行编程不会让您利用这些。

  3. 您将无法正确地对依赖于其他实现的类进行单元测试,因为在这种情况下不可能进行模拟。

  4. 随着具体实现,代码维护和扩展变得更加困难。