OOD和将活动作为参数传递给其他类的构造函数

时间:2011-05-02 14:07:51

标签: java android android-activity oop

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

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

  1. 会员(数据或 方法)活动
  2. 尚未初始化的数据成员 那些建设者的时候 调用。
  3. 它有效,但我一直觉得我在正确的OOD方面做了一些根本性的错误。

    特别是关于第1点:

    1. 如此“私密”的成员 活动本质上变成了一个游泳池 全局变量混乱。
    2. 另外,那些其他课程 为了这个目的而创建的 模块化,现在依赖于 活动课的知识, 这让他们不是真的 可在此应用程序外重复使用...
    3. 由于这些原因,我尽量避免尽可能将活动作为参数传递给构造函数,但在Android开发环境中,我发现它更难做,原因我还没有完全理解。

      我的问题:

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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

关于你的第二个问题,我想不出你必须通过主要活动然后在其上调用方法的任何理由。