Java学习笔记---设计模式之单例模式

一、引言

       单例模式是设计模式中最常用的一种,也是工作面试中会被经常问到的一种,因此,这篇文章将主要讲述如何实现单例模式,以及单例模式的一些优缺点。

二、单例模式的定义

        单例模式就是为了保证一个类在运行中只能有一个实例的一种设计模式。

三、单例模式的实现方式

1.实例变量实现(俗称懒汉式)


public class Singlton{
        private Singlton instance;
	private Singlton(){
		
	}

	public static Singlton getInstance(){
		if(instance==null){
			instance = new Singlton();
		}

	}
	public void sFunc(){
		//do something;
	}

}


考虑同步的话可以加上相应的同步锁:
public static synchronized Singlton getInstance(){
 if(instance == null){
         instance=new Singlton();
  }
}

2.静态内部类实现

public class Singlton{
	
	private Singlton(){
	
	}
	private  static class InstanceHolder{
		public static final Singlton instance=new Singlton();
	}
	public static Singlton getInstance(){
		return InstanceHolder.instance;
	}
	public void sFunc(){
		//do something;
	}


}


天生线程安全(网评:最好的实现方式)

3.类变量实现(俗称饿汉式)

public class Singlton{
	
	private Singlton(){
	
	}
	private static final Singlton instance=new Singlton();
	public static Singlton getInstance(){
		return instance;
	}
	public void sFunc(){
		//do something;
	}

}
线程安全

4.枚举实现


public enum SingleInstance{
	Instance;
	private SingleInstance(){

	}
	public void doFunc(){
		//do something
	}
}

调用方式:
SingleInstance.Instance.doFunc();


ps:JDK1.5之后才可以使用

四、类图


五、总结

单例模式在项目中被经常用到,比如Android中的Log类,WindowManagerGlobal类都是用单例模式实现的,因此掌握单例模式是一项必备技能,至于用那种方式实现单例模式还需要根据具体的使用场合来做决定。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值