首页 > 其他 > 详细

枚举类实现单例模式

时间:2020-05-16 23:12:29      阅读:59      评论:0      收藏:0      [点我收藏+]

实现单例模式时候,要思考四个问题:

  1. 是否线程安全
  2. 多线程安全了,效率是否能接受
  3. 是否可以延迟加载
  4. 是否支持序列化

请看下面一张图:
技术分享图片

枚举实现单例模式如下:简洁优雅

public enum Singleton 0 {
    INSTANCE;
    int anInt;

    public int getAnInt() {
        return anInt;
    }

    public void setAnInt( int anInt ) {
        this.anInt = anInt;
    }

    public  void dosomethings(  ) {
        System.out.println("枚举类实现单例");
    }
}

恶汉式单例模式如下:

public class Singleton 1{
    private static Singleton instance = new Singleton();
    private Singleton(){}
    public static Singleton getInstance(){
        return instance;
    }
}

饱汉式单例模式



public class Singleton2 {
 
	private static Singleton2 singleton;
	
	private Singleton2(){
		
	}
	
	public static synchronized Singleton2 getInstance(){
		if(singleton == null) 
			singleton = new Singleton2();
		return singleton;
	}


双重锁模式(DCL):


public class Singleton3 {
	private static Singleton3 singleton;
	
	private Singleton3(){
		
	}
	
	public static Singleton3 getInstance(){
		if(singleton == null){
			synchronized(Singleton3.class){
				if(singleton == null){
					singleton = new Singleton3();
				}
			}
		}
		return singleton;
	}

推荐博客 https://juejin.im/post/5b50b0dd6fb9a04f932ff53f

枚举类实现单例模式

原文:https://www.cnblogs.com/rainbowbridge/p/12902359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!