两课的最佳实践

时间:2016-10-21 02:41:20

标签: java android performance

如果我需要使用全局类什么是最佳选择?为什么?

public class Global {

    public static JSONObject GetJsonResquest(String url){
        ....
    };
}

然后在我的活动中调用Global.GetJsonResquest(url)

  public class Singleton {
    private static Singleton ourInstance = new Singleton();

    public static Singleton getInstance() {
        return ourInstance;
    }

    private Singleton() {
    }
    public JSONObject GetJsonResquest(String url){
      .....
    }
}

然后使用通过Singleton.getInstance()。GetJsonResquest(“Asd”);

1 个答案:

答案 0 :(得分:0)

当我需要一个全局静态变量时,我喜欢将它们分组为类似

的类
public class MyConstants {
    public static final int TIMEOUT = 10000;
}

要使用它,我可以称之为

long tick = System.currentThreadMillis();
while((System.currentThreadMillis() - tick) < MyConstants.TIMEOUT){
    Thread.sleep(1000);
}

因此,当我更改TIMEOUT值时,我不必更改其他调用它的类

对于全局静态方法,我使用它们像

public class Utility{
     public static boolean isStringValidJson(String jsonString){
         return false;   
     }
}

与上述相同的原因。当我更改 isStringValidJson 时,调用它的其他类不会更改

我确实使用单例模式,但只有当我重写Application类时才会这样。但是,我在 OnCreate 中设置了实例值。这意味着如果未调用 OnCreate getInstance 将返回null

public class MyApplication extends Application {

    private static MyApplication instance;

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }

    public static synchronized MyApplication getInstance(){
        return instance;
    }
}