Java设计模式之单例模式

举报
芝麻粒儿 发表于 2021/08/05 00:33:28 2021/08/05
1.5k+ 0 0
【摘要】 推荐资源站:https://zhimalier.com/ 单例模式常用两种写法:懒汉式单例、饿汉式单例 单例模式特点: 只能有一个实例 定义一个私有的、静态的本身的对象 创建一个共有的获取这个对象的方法 总之,选择单例模式是为了避免不一致的状态 一、懒汉式单例 在第一次调用的时候实例化自己 public class Lazy { //1、 构造方法私有化 p...

推荐资源站:https://zhimalier.com/

单例模式常用两种写法:懒汉式单例、饿汉式单例

单例模式特点:
只能有一个实例
定义一个私有的、静态的本身的对象
创建一个共有的获取这个对象的方法
总之,选择单例模式是为了避免不一致的状态

一、懒汉式单例

在第一次调用的时候实例化自己


      public class Lazy {
      //1、 构造方法私有化
      private Lazy(){}
      //2、创建一个私有的静态对象
      private static Lazy instance=null;
      //3、共有的获取这个对象的方法 , static 
      public static Lazy getInstance(){
      if( instance == null){
       instance = new Lazy();
       }
      return instance;
       }
      }
  
 

Lazy通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Lazy的唯一实例只能通过getInstance()方法访问。但线程不安全

二、饿汉式单例


      public class Lazy {
      //1、 构造方法私有化
      private Lazy(){}
      //2、创建一个私有的静态对象
      private static Lazy instance=new Lazy();
      //3、共有的获取这个对象的方法 , static 
      public static Lazy getInstance(){
      return instance;
       }
      }
  
 

饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。
 

三、饿汉式和懒汉式区别


饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了,

而懒汉比较懒,只有当调用getInstance的时候,才会去初始化这个单例。

文章来源: zhima.blog.csdn.net,作者:芝麻粒儿,版权归原作者所有,如需转载,请联系作者。

原文链接:zhima.blog.csdn.net/article/details/52005618

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。