0

目前我已经在我的主要活动中嵌入了一个 TouchDB 实例,现在已经达到了一个单独的片段需要访问它的地步,并且仅仅将数据从主要活动传递到其他活动是不够的。是否有推荐的方式在活动/片段之间共享相同的数据库实例?例如,在与我的应用程序类似的下图中,片段 b 需要访问数据库,但在手机上,它将附加到 Activity B 和平板电脑 Activity A(在我的情况下是主要活动)。

在此处输入图像描述

从我的主要活动中提取数据库实现并将其放入单例类是推荐的方式吗?或者在每个活动/片段中实例化并销毁数据库?如果后者是首选方法,我的理解是正确的,除了主要活动之外,最好在片段中实现数据库而不是它们的相关活动?

4

1 回答 1

0

绝对应该从您的视图代码中提取您的数据库代码。之后,您有很多选择,具体取决于您的应用程序的需要。

根据您的需要可能有用的模式:

  • 控制反转 (IoC)
  • 依赖注入
  • 工厂
  • 辛格尔顿

关于单例的旁注,您提到它是一种可能的解决方案。单例和全局静态对象之间几乎没有区别。它们有相似的弱点——它们引入了代码依赖,并且使用它们的代码很难编写自动化测试。主要区别在于 Singleton 可以控制何时首次创建底层对象——这可能对您的应用程序的影响最小。(如果您的数据库代码需要 10 秒才能加载,并且您想在加载期间显示启动画面,那么单例可能会有所帮助。)

于 2013-05-08T20:23:35.890 回答