设计模式(创建型--单例模式)

在这里插入图片描述
在这里插入图片描述
实现单例模式的5种方式

1.饿汉式单例(立即加载方式)

public class Singleton{

	private Singleton(){};
	private static Singleton single = new Singleton();
	
	public static Singleton getInstance(){
		return single;
	}
}

2.懒汉式单例(延迟加载方式)

public class Singleton{

	private Singleton(){};
	private static Singleton single  =null ;
	
	public static Singleton getInstance(){
		if(Singleton  == null){
			Singleton = new Singleton();
		}
		return Singleton ;
	}
}

多线程环境下使用syhchronized

public class Singleton{

	private Singleton(){};
	private static Singleton single  =null ;
	
	public static Singleton getInstance(){
		// 等同于 synchronized public static Singleton getInstance()
	 	syhchronized(Singleton.class){
			if(Singleton  == null){
				Singleton = new Singleton();
			}
		}
	return Singleton ;
	}
}

利用双重检查提高效率

public class Singleton{

	private Singleton(){};
	private static Singleton single  =null ;
	
	public static  Singleton getInstance(){
		if(Singleton  == null){
			syhchronized(Singleton.class){
				if(Singleton  == null){
					Singleton = new Singleton();
				}
			}
		}
		return Singleton ;
	}
}

3.静态内部类实现

public class Singleton{

	private Singleton(){};
	
	private static class InnerClass {
		private static Singleton single  =new Singleton();
	}
	
	public static Singleton getInstance(){
		return InnerClass .single;
	}
}

4.静态代码块

public class Singleton{
	private Singleton(){};
	private static Singleton single  =null ;
	
	static {
		single = new Singleton();
	}
	
	public static Singleton getInstance(){
		return single;
	}
}

5.内部枚举类实现

public class SingletonFactory {

    // 内部枚举类
   private enum EnmuSingleton{
   		Singleton;
     	private Singleton singleton;
         //枚举类的构造方法在类加载是被实例化 
    	private EnmuSingleton(){
     		singleton = new Singleton();
   	    }
    	public Singleton getInstance(){
       		return singleton;
    	}
    }
    
    public static Singleton getInstance() {
      	  return EnmuSingleton.Singleton.getInstance();
    }
}

class Singleton{
    public Singleton(){}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值