Singleton……?

こんなのを作ってみました。

//インターフェース側

class Singleton{
    static public Factory factory = null;
    static public void setFactory( Factory f ){ factory = f; }
    static public Singleton obj = null;
    static public Singleton get(){
        if( obj == null ){
            if( factory == null ){
                throw new RuntimeException( "SingletonのFactoryがnull" );
            }
            obj = factory.getSingleton();
        }
        return obj;
    }
    Singleton(){}

    public void hoge(){
        System.out.println( "Singleton" );
    }
}

interface Factory{
    public Singleton getSingleton();
}
//実装側

class SingletonEx extends Singleton{
    public void hoge(){
        System.out.println( "SingletonEx" );
    }
}

class FactoryEx implements Factory{
    public Singleton getSingleton(){
        return new SingletonEx();
    }
}
//実行側

public static void main( String args[] ){
    Singleton.setFactory( new FactoryEx() );
    Singleton.get().hoge();
}

なんだろこれ……SingletonとAbstractFactoryを足して2で割ったみたいな?
Singletonを継承して使えないかなぁとか考えならいろいろやってると、いつの間にかこうなってました。
Singletonって、オブジェクトが必ず存在することを保証するパターンなのに、setFactory()をしないと使えないっていうのが欠点。欠点というか0点ですね(;´Д`)


設計って(゜∠゜)ムズカシイネ