A Facade to handle Concrete Singleton creation in a AbstractSingletonPattern

Code Sample:

public class SingletonRegistry {
	
	private SingletonRegistry() {
	}
	private static ConcreteSingleton1 concreteSingleton1;
	private static ConcreteSingleton2 concreteSingleton2;
	
	public static Singleton getSingleton(final String which) {
	try {
		if("ConcreteSingleton1".equalsIgnoreCase(which)) {
		return getInstanceOf1();
		}
		else if("ConcreteSingleton2".equalsIgnoreCase(which)) {
		return getInstanceOf2();
		}
	}
	catch (SingletonException se) {
		return se.getInstance();
	}
	throw new RuntimeException("Match not found exception");
	}
	
	private static Singleton getInstanceOf1() throws SingletonException {
	if(concreteSingleton1 == null) {
		concreteSingleton1 = new ConcreteSingleton1();
	}
	return concreteSingleton1;
	}
	private static Singleton getInstanceOf2() throws SingletonException {
	if(concreteSingleton2 == null) {
		concreteSingleton2 = new ConcreteSingleton2();
	}
	return concreteSingleton2;
	}
}

-- NitinVerma