Android:使用全局对象而不是创建新对象

时间:2012-04-12 12:14:08

标签: java android global

我的Android应用程序中有一个A类,我有一些方法。 这些方法是公开的,并用于其他类(B,C,D,E,F ......)。

是否有可能只从A类创建一次对象,然后在其他类中使用它,或者我必须在每个classe中创建新对象。

其实我必须在每个classe(B,C,D,E,F ......)

A a = new A();
a.xxxx;

如果我只能创建一次对象a然后在其他类中调用它,那将是很棒的。

谢谢。

5 个答案:

答案 0 :(得分:6)

使用单例模式。它允许您跨类使用相同的实例:

http://www.javabeginner.com/learn-java/java-singleton-design-pattern

答案 1 :(得分:3)

class A{
    static A a;
    static{
          a = new A();
    }
}

在其他所有课程中使用

A.a to get the object and call respective methods as
A.a.xxxx()

答案 2 :(得分:2)

使用静态方法的类比来做到这一点。

例如:

public class Helper{
    public static void doSomething(){
        //do something here
    }
}

现在在其他课程中,使用以下方法:

Helper.doSomething();

Singleton模式也是替代模式。

答案 3 :(得分:1)

如果不涉及任何状态,那么为什么不将这些方法设为静态或考虑单实例模式呢?

how to use static methodssingleton pattern

答案 4 :(得分:1)

我看到以下3种可能性:

1。如果这些只是“正常”辅助方法,您也可以这样做

  

B类扩展A

并将A的方法继承为B,C,D,E,....

2. 但是如果您需要A类的内部存储器,它对所有其他类或其B,C,D实例是全局的,那么可以使用静态模式,如

class A{

static int myGlobalIntVariable; //which is accessible from everywhere 
static void myHelperMethod1() {

}

或3。此外,您可以使用上面提到的单例,它创建一个您在任何地方使用的实例。

作为评论,您可以根据您在访问方法时的偏好使用单例或静态模式。

对于静态模式,您必须将它们称为:

A.myHelperMethod();

对于单身人士,你必须这样做:

A.getSingleton().myHelperMethod1();  or A.singleton.myHelperMethod1()

如果您在A类中定义了一个名为singleton的变量

使用哪一个真正取决于您的需求和品味: - )