【问题标题】:OOD and Passing Activity as a Parameter to Constructors of other classesOOD 和将 Activity 作为参数传递给其他类的构造函数
【发布时间】:2011-08-17 00:30:34
【问题描述】:

到目前为止,为了实现某些功能目标,我一直在将应用程序的主要活动对象作为参数分发给其他类的构造函数,然后将其存储为私有变量。

我这样做,不是因为我需要访问整个活动,而是因为我需要访问:

  1. 成员(数据或 方法)的活动
  2. 尚未初始化的数据成员 当时那些构造函数 调用。

它有效,但我一直觉得在正确的 OOD 方面我做的事情根本上是错误的。

特别是关于第 1 点:

  1. 如此“私密”的成员 活动本质上变成了一个池 全局变量乱七八糟。
  2. 此外,那些其他类 为目的而创建的 模块化,现在依赖于 活动课的知识, 这让他们不是真的 可在此应用之外重复使用...

由于这些原因,我尽量避免将 Activity 作为参数传递给构造函数,但在 Android 开发环境中我发现它更难做到,原因我还不完全理解。

我的问题:

  1. 是否有推荐的“规则 拇指”可以帮助避免这种情况 走“捷径”的陷阱 将活动作为参数传递?
  2. 是否存在通过 作为参数的活动是 概念上合理吗?

【问题讨论】:

    标签: java android android-activity oop


    【解决方案1】:

    一般来说,您应该避免保留对活动的引用。如果您确实需要,请将 WeakReference 存储到您的活动中。这是为了避免内存泄漏。

    正如您所说,通过传递对活动的引用,您在另一个对象和您的活动类之间引入了依赖关系。给出一些示例代码,以便我们给出如何重构它的示例。

    【讨论】:

    • 两个答案都很好,但你的答案向我介绍了WeakReference,因此接受了。
    【解决方案2】:

    我发现最好将多个类需要的值保存在单独的 Util 类中。这样,您不必将主 Activity 传递给其他类。

    另一种方法是根据需要将主 Activity 具有的所需值作为参数传递给其他类。

    对于您的第二个问题,我想不出您必须传递主要活动然后对其调用方法的任何理由。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多