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.