簡體   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