我正在使用Kotlin编程语言开发一个Android应用程序。我开始在应用程序中使用Model View Presenter模式。老实说,这是我第一次使用MVP模式,尽管我已经做了很长时间的Android开发。现在,我有点难以遵循该模式的最佳实践和标准。
这是我目前正在开发的功能。这是一个非常简单和基本的功能。
应用程序将更新文本视图。更新文本视图时,字符串(消息)将作为参数传递给函数。在函数内部,如果字符串为空,它将隐藏文本视图。否则,它将再次显示文本视图。我的困难在于,我不太确定如何实现符合MVP模式的代码。尤其是切换文本视图可见性状态的逻辑。
这是我的演示者类LoginActivityPresenter的当前签名
class LoginActivityPresenter(viewArg: View)
{
private var view:View = viewArg
interface View
{
fun updateErrorMessageTextView(message: String)
}
}
我认为activity类将实现LoginActivityPresenter。查看并提供updateErrorMessageTextView方法的实现。因此,在活动中,在一个函数中,它将执行以下任务。
它将检查字符串是否为空。如果是,它将隐藏视图。否则,它将显示视图(返回)。然后,它将设置带有消息的文本视图。由于上面的演示者类签名,所有内容都在活动类中。
另一种实现LoginActivityPresenter类的方法如下。
class LoginActivityPresenter(viewArg: View)
{
private var view:View = viewArg
fun updateErrorMessage(message: String) {
if (message.isNullOrEmpty()) {
this.view.hideErrorTextView()
return
}
this.view.showErrorTextView()
this.view.updateErrorMessageTextView(message)
}
interface View
{
fun updateErrorMessageTextView(message: String)
fun showErrorTextView()
fun hideErrorTextView()
}
}
因此,在第二个实现中,presenter类将根据字符串值处理显示或隐藏视图的逻辑,而不是activity类正在处理的逻辑。
我的问题是,对于MVP模式,哪种方法更合适、更标准,为什么?