GOF23_单例设计模式

单例设计模式

懒汉式

//单例设计模式意味着只有一个实例对象
public class SingleTon{
	//私有化全局变量,避免外部直接调用
	//4,为了能让对象能直接调用,设置静态方法
	private static SingleTon singleTon;
	
	//1,私有构造器,外部无法实例化对象
	private SingleTon(){
		
	}
	//2,需要给外部提供一个访问实例对象的方法
	public static SingleTon getInstance(){
		//3,设置一次性实例限制,需要一个全局变量
        //若已实例直接返回对象
		if(singleTon==null){
		//5,考虑到多线程并发问题,有可能多个线程进入,必须给变量SingleTon上锁
			synchronized(SingleTon.class){
			//线程排队,有可能导致出现多个实例,避免又一次实例,需要双重验证
				if(singleTon==null){
					singleTon=new SingleTon();
				}
			}
		}
		return singleTon
	}
}


由于加锁的原因,效率会降低,为此改进,有了饿汉式。

饿汉式

1	public class SingleTon{
2		//在类加载时就进行实例化
3		private static SingleTon singleTon = new SingleTon();
4		private SingleTon(){}
5		public static SingleTon getInstance(){
6			return singleTon
7		}
8	}

如需要进一步理解,可以看看这哥们的单例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值