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.