1,單例類的實現. 可以保證在非同時多線程多類載入器的環境下的單例
public class Singleton...{
private static Singleton instance;
//私人化構造方法來防止外部通過new 來建立該類的執行個體
private Singleton ()...{
}
//使用 synchronzied 保證安全執行緒
public synchronized static Singleton getInstance()...{
if(instance==null)...{
instance= new Singleton();
}
return instance;
}
}
2.單例註冊表的實現. 用於操作一組對象的聚集
import java.util.*;
public class SingletonRegistry...{
private static SingletonRegistry instance;
private static Map factoryMap = new HashMap();
//私人化構造方法
private SingletonRegistry()...{
}
public synchronized static SingletonRegistry getInstance()...{
if(instance==null)...{
instance = new SingletonRegistry();
}
return instance;
}
public synchronized BeanFactroy getBeanFactory(String factoryName)...{
BeanFactroy f=null;
//在註冊表中尋找看是否有這個BeanFactory的執行個體
Object o = factoryMap.get(factoryName);
if(o!=null)...{
return (BeanFactroy)o;
}
try ...{
f= (BeanFactroy)Class.forName(factoryName).newInstance();
//將Bean工廠註冊到註冊表
factoryMap.put(factoryName,f);
}
catch (Exception ex) ...{
ex.printStackTrace();
}
return f;
}
}
interface BeanFactroy...{
}
/**//*一個單例類,通過Map持有BeanFactory的對象聚集。SingletngRegistry本身只有一個執行個體 但是
*它可以持有任意多個BeanFactory的執行個體
*/