我的Android应用程序中有一个A类,我有一些方法。 这些方法是公开的,并用于其他类(B,C,D,E,F ......)。
是否有可能只从A类创建一次对象,然后在其他类中使用它,或者我必须在每个classe中创建新对象。
其实我必须在每个classe(B,C,D,E,F ......)
A a = new A();
a.xxxx;
如果我只能创建一次对象a然后在其他类中调用它,那将是很棒的。
谢谢。答案 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)
如果不涉及任何状态,那么为什么不将这些方法设为静态或考虑单实例模式呢?
答案 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
的变量
使用哪一个真正取决于您的需求和品味: - )