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

  • 相关阅读:
    UE4 Cel Shading(卡通渲染)
    UE4 常用数学
    锈迹材质全流程实例:Blender-》SP-》UE4
    ue4 优化建议与经验
    VisualStudio开发UE4工程设置
    Procedural Mesh Component in C++:Getting Started
    Java容器有哪些?
    java 连接mongodb
    mongodb 系列 ~ mongo 用户验证系列
    mongodb连接认证失败
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/14500571.html
Copyright © 2011-2022 走看看