Java设计模式初解 之 单例模式

1-什么是单例模式

   java中new一个类,就得到了一个对象。多次的new,便得到多个对象;但是,有时我们需要只有一个实例。

   定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供使用。

   特点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

2-为什么使用单例模式

   在实际应用开发中,有时候我们仅仅需要某个资源的一份就够了,如我们知道的Windows系统中,任务管理器,我们只能在系统中 打开一个窗口(不信,你可以试试);

   还有,QQ软件聊天窗口,无论你点击几次好友头像,始终是同一个聊天窗口。这在程序中就是 希望这个窗口对象只有一个实例,只被实例化一次,后面如果还想得到实例,返回的还是这个已经存在的实例对象,这是一个需求场景。其次这种模式,

   还降低了内存使用率,减少了不必要的内存浪费。因为,一个实例已经足够可以胜任我们要完成的业务要求。

3-什么情况下使用单例

   正如2中提到,如果你希望这个资源(对象)只要一份就可以,就能帮你完成某个任务,而且又能节省资源开销,那么你可以采用单例;

一个简单的单例代码--

<span style="font-size:14px;">public class Single {
	//把单例对象声明为静态,始终保持在内存中只有一份
	private static Single single = null;
	//私有构造器方法 使得外部不可以通过传统的new来实例化这个对象
	//注:不可以省略,省略了,就是public修饰的构造器了
	private Single(){
		
	}
	
	//为了线程安全 使用 synchronized 方法锁 
	public static synchronized Single getInstance(){
		//如果对象不存在,就创建对象
		if(single==null){
			single = new Single();
		}//否则,就返回已经存在的实例
		return single;
	}

}</span>


  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值