【问题标题】:Android and the mediator design patternAndroid 和中介者设计模式
【发布时间】:2013-04-14 18:32:57
【问题描述】:

我对 Android 还很陌生,在阅读了一本书并学习了很多教程之后,我即将创建我的第一个“真正的”应用程序。

我的问题很简单:在设计 android 应用时,中介者设计模式仍然是一个不错的选择吗?

如果是,在编写 android 应用程序时有哪些设计模式应该避免?

如果没有,您可以使用中介模式来代替不同对象的实例集合吗?

【问题讨论】:

  • 您想如何使用调解器?你可能想避免单例。
  • @MaciejGórski 例如,我有一个用户对象,我的所有活动都需要知道。为什么要避免单身?

标签: android design-patterns mediator


【解决方案1】:

我建议创建一个模型类(我们称之为MyModel)并在Application.onCreate(不是Activity.onCreate)中创建这个类的对象。

之后为此添加 getter,因此您可以从任何 ActivityService 获取此模型,如下所示:

MyApplication app = (MyApplication) getApplication();
MyModel model = app.getMyModel();
User user = model.getCurrentUser();

等等

如果你在那里创建方法protected MyModel getModel(),那么创建BaseActivity 类可以节省你的打字时间,该方法从上面代码的前两行返回模型。

编辑:

您需要创建一个扩展Application 的类,并将该类注册到AndroidManifest.xml

方法如下:https://stackoverflow.com/a/2929927/2183804

编辑(关于单例):

据说它是一种反模式(不仅在 Android 上)。在 Android 中,我看到人们以带有 MySingleton.getInstance(Context) 之类的访问器的单例结尾,因为他们无论如何都需要 Context,例如用于 SharedPrefs 或 DB 访问。这就是 Application 的用途,因此无需创建额外的、骇人听闻的实体,它可能会以错误的方式使用:MySingleton.getInstance(null) 从没有可用上下文的地方。这可能会在进程被杀死并重新启动后导致 NPE。

【讨论】:

  • 如何在 Application.onCreate() 上创建它?我在哪里可以找到这个。你不是在建议单身吗?
  • 应用程序是另一个组件。只有一个实例,但它不是单例(没有静态访问器)。查看我的编辑。
  • 谢谢您或您的回答非常有帮助,您能否向我解释一下为什么要避免单身?
  • @MarcRasmussen 添加了一些关于单身人士的信息
猜你喜欢
  • 2022-08-21
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多