单例注册表(应该属于饿汉模式吧?)

public class Singleton{ 
	static private HashMap registry=new HashMap(); // 静态块,在类被加载时自动执行
	
	static{
		Singleton rs=new Singleton(); 
		registry.put(rs.getClass().getName(),rs); 
	
	} // 受保护的默认构造函数,如果为继承关系,则可以调用,克服了单例类不能为继承的缺点
	protected Singleton(){}
	 //静态工厂方法,返回此类的唯一实例 public
	public  static Singleton getinstance(String name){
		if(name==null){ 
			name="Singleton";
		} 
		if(registry.get(name)==null){ 
			 try{ 
				 registry.put(name,Class.forName(name).newInstance()); 
			 } catch(Exception ex){
				 ex.printStackTrace();
			 } 
		} 
		return (Singleton)registry.get(name); 
	} 
 
}<span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">二、用处 </span><span style="font-family: Arial, Helvetica, sans-serif;">有一些对象其实我们完全只需要一个即可,如:线程池(threadpool)、缓存(cache)、注册表(registry)的对象、设备的驱动程序的对象等等。事实上,这些类的对象只能有一个实例,如果制造出多个实例,就会导致许多问题的产生,例如:程序的行为异常、资源的过量使用、产生不一致的结果等等。Java Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。我们常常看到工厂模式中类装入器(class loader)中也用Singleton模式实现的,因为被装入的类实际也属于资源。 </span>
</pre><pre name="code" class="java">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值