Singleton Decorator
      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.