Android Singleton,阻止用户实例化Class

时间:2015-02-03 08:41:40

标签: java android singleton global-variables

在我的应用程序中,我有一些在android Application中实例化的对象,应该像一个单例。这很好用:

   public class App extends Application {
      private final Manager manager = new Manager(); //this is the singleton class
      //getters and other stuff
   }

现在,每当我需要访问我的经理类时,我都会通过应用程序上下文调用它。好的。不过,我希望用户阻止创建Manager个对象。我想确保客户端只能通过应用程序上下文访问manager对象,而不是通过调用Manager创建自己的new Manager()对象...

亲切的问候。

2 个答案:

答案 0 :(得分:2)

您可以将Manager类放在App类中并将其设置为私有。

然后,只有从App内部才能以任何方式访问该类。

答案 1 :(得分:2)

您应该创建工厂方法并使用它来创建Manager的实例。 请注意: Manager的构造函数应该是私有的。

经理应该是这样的:

公共班级经理{

private static Manager instance;

private Manager() {
    ...
}

public static Manager getManager() {
    if (instance == null) {
        instance = new Manager()
    }
    return manager;
}

}

有许多单例模式实现。你可以尝试谷歌找到很多例子。