Я хочу использовать следующий шаблон для создания синглтона в JavaСоздание ява одноточечно со статическим внутренним классом
public class Singleton {
// Private constructor prevents instantiation from other classes
private Singleton() { }
/**
* SingletonHolder is loaded on the first execution of Singleton.getInstance()
* or the first access to SingletonHolder.INSTANCE, not before.
*/
private static class SingletonHolder {
public static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
Но что происходит, когда частный конструктор я хочу назвать это
private Singleton(Object stuff) {... }
Как я пропускаю stuff
до INSTANCE = new Singleton()
? Как и в INSTANCE = new Singleton(stuff);
Переписывая выше фрагмент кода:
public class Singleton {
// Private constructor prevents instantiation from other classes
private Singleton(Object stuff) { ... }
/**
* SingletonHolder is loaded on the first execution of Singleton.getInstance()
* or the first access to SingletonHolder.INSTANCE, not before.
*/
private static class SingletonHolder {
public static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance(Object stuff) {
return SingletonHolder.INSTANCE;//where is my stuff passed in?
}
}
EDIT:
для тех из вас, утверждая, что этот шаблон не поточно, читайте здесь: http://en.wikipedia.org/wiki/Singleton_pattern#The_solution_of_Bill_Pugh.
Объект, который я передаю, представляет собой контекст приложения Android.
Почему, по вашему мнению, вам нужен синглтон в вашем приложении? –
Ваше описание, вероятно, является признаком того, что вы не должны использовать синглтон. В частности, что происходит, если вы вызываете: 'Singleton.getInstance (object1); Singleton.getInstance (object2); '???У вас теперь есть два примера вашего синглтона? Вы мутируете первый экземпляр? и т. д. – assylias
@ LuiggiMendoza, если вы хотите сделать так, сделайте это. Я не буду писать диссертацию о том, зачем мне нужен синглтон. –