A DecoratorPattern on SingletonDecorator.
public class SingletonDecorator implements Singleton {
private Singleton singleton;
private static String DEFAULT = "ConcreteSingleton1";
private static String getDefault() {
return DEFAULT;
}
public SingletonDecorator() {
this(getDefault());
}
public SingletonDecorator(final String which) {
this(SingletonRegistry.getSingleton(which));
}
public SingletonDecorator(final Singleton singleton) {
this.singleton = singleton;
}
public Singleton getInstance() {
return singleton;
}
// decorator interfaced methods.
}
SingletonRegistry is just a facade for Singleton creation.