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点ですね(;´Д`)
設計って(゜∠゜)ムズカシイネ