在基于 MVP 架构的 Android 应用程序中放置 AlertDialog
Place for AlertDialog in Android app based on MVP architecture
谁能告诉我,根据 MVP 架构,我应该将 AlertDialogs 放在应用程序的什么位置?我应该将它们留在我的 Activity 中还是放在演示者那里?
由于MVP不是一个特定的平台原则,它可以用来编写platform-agnostic应用程序。由于 M 和 P 很容易用简单的 Java 编写(对于 M 并不总是如此,但对于 P 几乎总是如此),V 实际上是目标平台的一个组件(例如,Swing,GWT,JavaFX,Android,甚至 CLI [命令行界面])。假设您编写了这样一个 cross-platform 应用程序并且您有一个特定的视图 INotificationView
声明如下:
public interface INotificationView {
void reportError(@Nonnull String errorMessage);
}
你的基础 platform-agnostic P 不知道它正在或应该在哪个平台上执行(至少在 compile-time 上),它只持有对 INotificationView
实例。因此,您可以注入 platform-specific 视图,例如:
public final class AndroidNotificationView
extends Activity
implements INotificationView {
@Override
public void reportError(@Nonnull final String errorMessage) {
Toast.makeText(this, "ERROR: " errorMessage, Toast.LENGTH_LONG).show();
}
}
请注意,这种方法允许您为演示者编写常规单元测试,因为它不再具有 platform-specific 依赖性。还有一点,比方说,你将你的应用程序移植到 CLI,所以上面的接口可能实现如下:
public final class CliNotificationView
implements INotificationView {
@Override
public void reportError(@Nonnull final String errorMessage) {
System.err.print("ERROR: ");
System.err.println(errormessage);
}
}
与 Android 的实现有很大不同,对吧?这基本上就是 MVP 的意义所在。
另请注意,通知视图方法的名称未命名为 displayError
或 showError
或 showAlertDisplay
只是因为视图界面未指定 how 错误将被通知给用户 -- 从 V 的角度来看,它仍然以某种方式报告错误。
因此,您可以轻松地将 AlertDialog
放入您的视图实现中。
谁能告诉我,根据 MVP 架构,我应该将 AlertDialogs 放在应用程序的什么位置?我应该将它们留在我的 Activity 中还是放在演示者那里?
由于MVP不是一个特定的平台原则,它可以用来编写platform-agnostic应用程序。由于 M 和 P 很容易用简单的 Java 编写(对于 M 并不总是如此,但对于 P 几乎总是如此),V 实际上是目标平台的一个组件(例如,Swing,GWT,JavaFX,Android,甚至 CLI [命令行界面])。假设您编写了这样一个 cross-platform 应用程序并且您有一个特定的视图 INotificationView
声明如下:
public interface INotificationView {
void reportError(@Nonnull String errorMessage);
}
你的基础 platform-agnostic P 不知道它正在或应该在哪个平台上执行(至少在 compile-time 上),它只持有对 INotificationView
实例。因此,您可以注入 platform-specific 视图,例如:
public final class AndroidNotificationView
extends Activity
implements INotificationView {
@Override
public void reportError(@Nonnull final String errorMessage) {
Toast.makeText(this, "ERROR: " errorMessage, Toast.LENGTH_LONG).show();
}
}
请注意,这种方法允许您为演示者编写常规单元测试,因为它不再具有 platform-specific 依赖性。还有一点,比方说,你将你的应用程序移植到 CLI,所以上面的接口可能实现如下:
public final class CliNotificationView
implements INotificationView {
@Override
public void reportError(@Nonnull final String errorMessage) {
System.err.print("ERROR: ");
System.err.println(errormessage);
}
}
与 Android 的实现有很大不同,对吧?这基本上就是 MVP 的意义所在。
另请注意,通知视图方法的名称未命名为 displayError
或 showError
或 showAlertDisplay
只是因为视图界面未指定 how 错误将被通知给用户 -- 从 V 的角度来看,它仍然以某种方式报告错误。
因此,您可以轻松地将 AlertDialog
放入您的视图实现中。