繁体   English   中英

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

[英]Android: use a global object instead of creating new ones

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

是否有可能只创建一次来自A类的对象,然后在其他类中使用它,否则我必须在每个类中创建一个新对象。

实际上,我必须在每个班级(B,C,D,E,F ...)中做

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

如果我只能创建一次对象a,然后在其他类中调用它,那就太好了。

谢谢。

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

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

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

在其他所有类中使用

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

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

例如:

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

现在在您的其他类中,使用以下方法:

Helper.doSomething();

或者Singleton模式也将是备用模式。

相反,为什么不将这些方法设为静态,或者如果不涉及任何状态,就考虑使用单实例模式。

如何使用静态方法单例模式

我看到以下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.您也可以使用上述的singleton来创建您在各处使用的实例。

仅作说明,您可以使用单例或静态模式,具体取决于访问方法时的偏好。

对于静态模式,您必须像这样调用它们:

A.myHelperMethod();

对于单例,您必须执行以下操作:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM