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的实例
*/
1265

被折叠的 条评论
为什么被折叠?



