public class Single {private static Single instance; public static Single getInstance(){  if(instance== null) instance = create();  return instance; }  private Single(){} protected Single create() { return new Single();}}class SingeSub extends Single{}
public class Single{ private static Single instance; public static Single getInstance( ){ if(instance==null) instance = create( ); return instance; } protectedSingle( ) { } staticSingle create ( ) { return new Single ( ) ; } } class SingleSub extends Shape{ }