Java设计模式——单例模式

1.单例设计模式:

   解决问题:就是可以保证一个类在内存中的对象的唯一性,对多个程序使用同一个配置对象时,就需要保证该对象的唯一性!

2.如何保证对象的唯一性:

1.不允许其他的程序用New创建该类对象

2.在该类中创建一个本类实例

3.对外提供一个方法让其他程序可以获取该对象

3.步骤:

1.私有化该类的构造函数

2.通过new 在本类中创建一个本类的私有化静态对象

3.定义一个公有方法将该对象返回


/**
 * 
 * @类名: 单例模式   
 * @功能: TODO  
 * @作者: Allen
 * @日期:2014-10-27 下午10:37:34
 */
class Single {
	private static Single aSingle  = new Single();
	private Single(){};
	
	public static Single getInstance()
	{
		return aSingle;
		
	}
		
}


但是以上实现没有考虑线程安全问题。所谓线程安全是指:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。显然以上实现并不满足线程安全的要求,在并发环境下很可能出现多个Singleton实例。


1.饿汉式单例类

/**
 * @类名: 饥饿式单例模式,在类创建时,就已经实例化
 */
class SingleDemo {
	private static SingleDemo SingleInstance = new SingleDemo();
	
	private SingleDemo(){};
	
	public static SingleDemo getInstance(){
		return SingleInstance;
	}
}


2.懒汉式单例模式


/**
 * @类名: //懒汉式单例类.在第一次调用的时候实例化  
 */
class SingleInstance {
	private static SingleInstance SingleInstance ;
	
	private SingleInstance(){};
	
	public static SingleInstance getInstance(){
		if (SingleInstance==null) {
			SingleInstance = new SingleInstance();
		}
		return SingleInstance;
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值