我第一次用Kotlin做了一个Android应用程序,使用MVP模式。我的问题是,为什么当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)
}
}
发布于 2019-03-24 06:49:33
为什么我需要视图和演示器的接口,因为Kotlin提供了更高级的函数?
这是软件开发中比较常见的一种做法。虽然您可能不使用接口,但是有许多要点说明了为什么接口更可取。从我的头顶上:
LoginPresenter
方法时,您受到唯一类型LoginPresenter.userLogin()
的限制。发布于 2019-03-23 23:54:57
如果你用高阶函数替换你的所有接口,你的性能可能会很差。
interface UserLoginInterface {
fun onLoginSuccess(loggedInUser: User)
fun onLoginFailure(error: ErrorResponse)
fun onRedirect(someOtherObjectWithDirectives: SomeDataClass)
}
要将其转换为高阶函数用法,您必须使用三个函数参数
https://stackoverflow.com/questions/55321400
复制