【发布时间】:2019-03-24 06:52:03
【问题描述】:
我正在使用 Kotlin 第一次使用 MVP 模式制作一个 Android 应用程序。我的问题是,为什么我需要 View 和 Presenter 的接口,因为 Kotlin 提供了更高阶的功能?我们不能只使用那些高阶函数进行通信吗?使用没有接口的模式不好吗?
我查看并阅读了很多文章和教程,但没有回答我的问题。我在下面的代码中所做的是错误的做法吗?谁能给我解释一下?
在我的活动中
override fun init() {
btn_login.setOnClickListener {
LoginPresenter.userLogin(et_emailAddress.text.toString(),et_password.text.toString()){
if (it){
//do something
}else{
//do something
}
}
}
}
我的主播
object LoginPresenter {
fun userLogin(emailId: String, password: String, completion: (Boolean) -> Unit) {
//do something
completion(true)
}
}
【问题讨论】:
-
“为什么我需要 View 和 Presenter 的接口” - 你不需要使用接口,但是最好编程到抽象而不是实现。想想这如何在单元测试中使您受益,或者您更改实现 - 合同保持不变。我认为使用演示者的界面没有任何好处,只是视图。观察一下,你的 Presenter 是一个单例,它真的应该被限制在 Activity 范围内。我不确定您对高阶函数的论点,因为您可以在 java 中提供
Consumer<T>吗?这也打破了 MVP 流控制。
标签: android design-patterns kotlin android-mvp