Java实现单例设计模式方法解析

 更新时间:2020年04月03日 14:22:29   作者:dirsoen  
这篇文章主要介绍了Java实现单例设计模式方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

单例模式的几种实现方式:

一:饿汉式单例

方式一:枚举方式获得单例对象

方式二:静态属性获得单例对象

方式三:静态方法获得单例对象

二:懒汉式单例

方式一:静态方法获得单例对象(线程安全)

方式二:内部类方式去获取单例对象

示例:

恶汉式:方式一

enum Singleton{
  INSTANCE;//单例
}

恶汉式:方式二

class Singleton{
  public static final Singleton INSTANCE = new Singleton();//单例
  private Singleton(){}
}

恶汉式:方式三

class Singleton{
  private static final Singleton INSTANCE = new Singleton();//单例
  private Singleton(){}
  public static Singleton getInstance(){
    return INSTANCE;
  }
}

懒汉式:方式一

class Singleton{
	  private static Singleton instance;
	  private Singleton(){
	}
	  public static Singleton getInstance(){
		    //存在线程安全问题(多线程的时候,不一定是单例)
		    
		/*if(null == instance){
      instance = new Singleton();
    }
    return instance;*/
		    if(null == instance){
			//提升代码效率,避免每一次都去走同步代码块
			      synchronized(Singleton.class){
				        if(null == instance){
					          instance = new Singleton();
				}
				        return instance;
				        
			}
			 
		}
		      return instance;
		   
	}
}
}

懒汉式:方式二

class Singleton{
  private Singleton(){}
  private static class Inner{
    public static final Singleton INSTANCE = new Singleton();
  }
  public static Singleton getInstance(){
    return Inner.INSTANCE;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java中IO的NIO通道解析

    Java中IO的NIO通道解析

    这篇文章主要介绍了Java中IO的NIO通道解析,NIO 提供了与传统 BIO 模型中的 Socket 和 ServerSocket 相对应的 SocketChannel 和 ServerSocketChannel 两种不同的套接字通道实现,需要的朋友可以参考下
    2024-01-01
  • Java中常用的设计模式之模板模式详解

    Java中常用的设计模式之模板模式详解

    这篇文章主要为大家详细介绍了Python实现学生成绩管理系统,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 解决SpringBoot中使用@Transactional注解遇到的问题

    解决SpringBoot中使用@Transactional注解遇到的问题

    这篇文章主要介绍了SpringBoot中使用@Transactional注解遇到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring Boot分离配置文件的多种方式总结

    Spring Boot分离配置文件的多种方式总结

    Spring Boot可以外部化程序配置,以便可以在不同环境中使用相同的应用程序代码;当然Spring Boot可以将配置文件进行拆分,以便于激活不同的运行环境,下面这篇文章主要给大家总结介绍了关于Spring Boot分离配置文件的多种方式,需要的朋友可以参考下
    2022-11-11
  • SpringBoot在容器中创建实例@Component和@bean有什么区别

    SpringBoot在容器中创建实例@Component和@bean有什么区别

    这篇文章主要介绍了SpringBoot在容器中创建实例@Component和@bean有什么区别,在Spring Boot中,@Component注解和@Bean注解都可以用于创建bean。它们的主要区别在于它们的作用范围和创建方式
    2023-03-03
  • idea不使用maven如何将项目打包

    idea不使用maven如何将项目打包

    使用IDEA 2021版本,不借助Maven进行打WAR包的步骤是:首先点击Project Structure,然后点击Artifacts,接着选择需要的打包类型,设置好包的名称,最后进行打包,这种方法适用于不使用Maven进行项目管理的情况
    2024-09-09
  • Java单例模式实现的几种方式

    Java单例模式实现的几种方式

    这篇文章主要介绍了Java单例模式实现的几种方式的相关资料,需要的朋友可以参考下
    2016-09-09
  • Gateway如何实现全局跨域

    Gateway如何实现全局跨域

    这篇文章主要介绍了Gateway如何实现全局跨域问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • java方法重写时需要注意的问题

    java方法重写时需要注意的问题

    大家好,本篇文章主要讲的是java方法重写时需要注意的问题,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Spring和Spring Boot的区别及说明

    Spring和Spring Boot的区别及说明

    这篇文章主要介绍了Spring和Spring Boot的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04

最新评论