zoukankan      html  css  js  c++  java
  • 设计模式

    单例模式

    单例模式指的是一个类在JVM中只有一个实例

    单例模式三要素?
    1. 构造方法私有化
    2. 静态属性指向实例
    3. public static的 getInstance方法,返回第二步的静态属性

    甚么时候用懒汉式甚么时候用饿汉式?

    饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。
    如果在构造方法里写了性能消耗较大,占时较久的代码,比如建立与数据库的连接,那么就会在启动的时候感觉稍微有些卡顿。

    懒汉式,是延迟加载的方式,只有使用的时候才会加载。 并且有线程安全的考量。
    使用懒汉式,在启动的时候,会感觉到比饿汉式略快,因为并没有做对象的实例化。 但是在第一次调用的时候,会进行实例化操作,感觉上就略慢。

    看业务需求,如果业务上允许有比较充分的启动和初始化时间,就使用饿汉式,否则就使用懒汉式

    1.懒汉式

    懒汉式无论如何都会创建一个实例对象

    /**
     * @description
     * @author: Administrator
     * @date: 2021/1/29 14:09
     */
    
    public class HungrySingleMan {
        //私有化构造方法使得该类无法在外部通过new实例化
        private HungrySingleMan(){};
        //准备一个属性,指向一个实例化对象。用类属性,所以只有一个(static)
        private static HungrySingleMan hungrySingle = new HungrySingleMan();
        //public static 方法提供给调用者使用类名.方法名调用
        public static HungrySingleMan getHungrySingle(){
            return hungrySingle;
        }
    }

    2.饿汉式

    饿汉式只有在第一调用的时候才会创建一个对象

    /**
     * @description
     * @author: Administrator
     * @date: 2021/1/29 14:20
     */
    //懒汉单例
    public class LazySingleMan {
        //构造方法私有化
        private LazySingleMan(){};
    
        //声明一个静态属性
        private static LazySingleMan lazySingleMan;
    
        //声明一个静态方法给使用者调用
    
        public static LazySingleMan getLazySingleMan(){
            //懒汉式和饿汉式不同在于,懒汉式只有在第一次调用时才实例化一个对象
            if(lazySingleMan == null){
                lazySingleMan = new LazySingleMan();
            }
            return lazySingleMan;
        }
    }

     

    以粮为纲全面发展
  • 相关阅读:
    「日常训练」Single-use Stones (CFR476D2D)
    「日常训练」Greedy Arkady (CFR476D2C)
    「Haskell 学习」二 类型和函数(上)
    「学习记录」《数值分析》第二章计算实习题(Python语言)
    「日常训练」Alena And The Heater (CFR466D2D)
    Dubbo 消费者
    Dubbo 暴露服务
    Rpc
    git fail to push some refs....
    Spring Cloud (6)config 客户端配置 与GitHub通信
  • 原文地址:https://www.cnblogs.com/alexliuf/p/14344768.html
Copyright © 2011-2022 走看看