zoukankan      html  css  js  c++  java
  • 设计模式-单例模式-饿汉和懒汉

      单例模式在编码时,可分成 饿汉和懒汉;

      饿汉式:当类进行初始化的时候,为该类分配内存,并创建对象。

      懒汉式:当类进行初始化的时候,对象不创建,等到使用的时候才创建。

      写饿汉式,记得如下:

        1. 保证单例,即构造方法得私有

        2. 变量需要是 static 和 final ,并且为变量直接创建对象(static可方便方法直接获取,final保证对象引用不可变)

        3. 获取 该类对象的方法必须是static的

      代码如下:

    public class HungrySingle {
    
        private static final HungrySingle hs = new HungrySingle();
    
        private HungrySingle(){}
    
        public static HungrySingle getInstance(){
            return hs;
        }
    }

      写双重检查懒汉式,记得如下:

        1. 保证单例,即构造方法得私有

        2. 变量需要是 static 和 volatile,不需要提前赋值。(static可方便方法直接获取,volatile避免指令重排序)

        3. 获取 该类对象的方法必须是static的

        4. 方法内部进行 双重判断 内架 一个 同步代码块。

      代码如下:

    public class LazySingle {
    
        private static volatile LazySingle lazySingle;
    
        private LazySingle(){}
    
        public static LazySingle getInstance(){
            if(lazySingle == null){
                synchronized (LazySingle.class){
                    if(lazySingle == null){
                        lazySingle = new LazySingle();
                    }
                }
            }
            return lazySingle;
        }
    }

      对上面代码有不惑可参考:https://blog.csdn.net/yeyazhishang/article/details/90445330

  • 相关阅读:
    基于ObjectCache的应用
    数学趣题——验证角谷猜想
    数学趣题——递归法寻找最小值
    数学趣题——寻找同构数
    数学趣题——表示成两个数的平方和
    数学趣题——马克思手稿中的数学题
    数学趣题——具有特殊性质的数
    数学趣题——验证四方定理
    数学趣题——连续整数固定和问题
    数学趣题——验证尼克彻斯定理
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/14500571.html
Copyright © 2011-2022 走看看