我正在使用Kotlin编程语言开发一个Android应用程序。我开始在我的应用程序中使用Model-View-Presenter模式。老实说,这是我第一次使用MVP模式,即使我从事Android开发已经有一段时间了。现在,我正在努力遵循模式的最佳实践和标准。
这是我当前正在开发的功能。一个非常简单且基本的功能。
应用程序将更新文本视图。更新文本视图时,字符串(消息)将作为参数传递给函数。在函数内部,如果字符串为空,它将隐藏文本视图。否则,它将再次显示文本视图。我的挣扎是我不太确定如何实现适合MVP模式的代码。尤其是切换文本视图可见性状态的逻辑。
这是我的演示者类LoginActivityPresenter的当前签名
class LoginActivityPresenter(viewArg: View)
{
private var view:View = viewArg
interface View
{
fun updateErrorMessageTextView(message: String)
}
}
我在想的是,活动类将实现LoginActivityPresenter.View并提供updateErrorMessageTextView方法的实现。因此,在活动中,在一个功能内,它将执行以下任务。
它将检查字符串是否为空。如果是,它将隐藏视图。否则,它将显示视图(后退)。然后它将设置带有消息的文本视图。由于上述presenter类的签名,所有活动类都包含在内。
我正在考虑实现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类将根据字符串值处理显示或隐藏视图的逻辑,而不是由活动类处理逻辑。
我的问题是哪种方法最适合MVP模式,为什么?