单例模式中的饿汉式与懒汉式

文章目录

  • 懒汉式
  • 饿汉式

懒汉式

只在被调用时再创造对象,以时间换空间。线程不安全

package com.lsh.model;

/**
 * @author :LiuShihao
 * @date :Created in 2020/12/31 4:11 下午
 * @desc :懒汉式单例
 * 等被调用时才创建
 * 以时间换空间
 */
public class Singleton2 {
     
    
    private static Singleton2 s ;
    
    //对外提供可以获得对象的方法
    public static Singleton2 getInstance(){
     
        if (s == null){
     
            s = new Singleton2();
        }
        
        return s;
    }
    
    //将构造方法私有化
    private Singleton2(){
     
        
    }
}

饿汉式

先把对象创造起来,在被调用是直接返回。以空间换时间,线程安全

package com.lsh.model;

/**
 * @author :LiuShihao
 * @date :Created in 2020/12/31 4:11 下午
 * @desc :饿汉式单例
 * 先创建对象在被人调用
 * 以空间换时间
 */
public class Singleton1 {
     
    //自己创建对象
    private static Singleton1 s = new Singleton1();

    //对外提供可以获得对象的方法
    public static Singleton1 getInstance(){
     
        return s;
    }

    //将构造方法私有化
    private Singleton1(){
     

    }
}

你可能感兴趣的:(设计模式)