单例模式之饿汉式

文章目录

单例模式(饿汉式)

单例模式是一种创建性的设计模式,主要是保证一个类只能有一个实例。全局中保证一个实例的使用。

单例模式饿汉式主要的构成是如下

  • 单例类
  • 私有化构造函数(防止实例化)
  • 私有化变量
  • 公共静态获得实例的方法(在调用这个方法前就已经实例化好了)

代码

静态变量创建实例代码

java 复制代码
package singleton;

/**
 *
 * @author: Hui
 **/
public class SingletonTest {

    public static void main(String[] args) {
        Singleton singleton = Singleton.getInstance();
        Singleton singleton1 = Singleton.getInstance();
        System.out.println(singleton == singleton1);
        System.out.println(singleton.hashCode());
        System.out.println(singleton1.hashCode());
    }

}

class Singleton{

    //1.私有化构造方法
    private Singleton(){}

    //2.创建一个静态对象
    private static Singleton instance = new Singleton();

    //3.创建一个静态返回实例方法
    public static Singleton getInstance(){
        return instance;
    }
}

静态代码块创建实例

java 复制代码
package singleton.type2;

/**
 * @author: Hui
 **/
public class SingletonTest2 {

    public static void main(String[] args) {
        Singleton singleton = Singleton.getInstance();
        Singleton singleton1 = Singleton.getInstance();
        System.out.println(singleton == singleton1);
        System.out.println(singleton.hashCode());
        System.out.println(singleton1.hashCode());
    }

}

class Singleton {

    //1.私有化构造方法
    private Singleton() {
    }

    //2.创建一个静态对象
    private static Singleton instance;

    static {
        instance = new Singleton();
    }

    //3.创建一个静态返回实例方法
    public static Singleton getInstance() {
        return instance;
    }
}

优点:提前实例化,不存在线程并发等问题。

缺点:不符合懒加载情况,在不使用该实例的时候会造成内存浪费。

相关推荐
纪念 22923 分钟前
C++ 算法基础 (差分)
开发语言·c++·算法
文丑颜不良啊3 小时前
LeetCode2761~2780题目解析
java·leetcode
IT枫斗者枫哥3 小时前
子线程断言失败,JUnit 为什么还显示通过?
java·后端
码农小河665 小时前
基于PHP的电商后台蜜罐系统
开发语言·php
starzy19905 小时前
深入理解Scala柯里化函数:函数链式变换
开发语言·scala
ShineWinsu5 小时前
对于Qt:QTreeWidget常见属性以及QTreeWidgetItem类的解析
开发语言·c++·qt·gui·客户端·多叉树·qtreewidget
落羽的落羽6 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
考虑考虑6 小时前
JDK27中的Set.ofLazy
java·后端·java ee
文丑颜不良啊6 小时前
LeetCode2841~2860题目解析
java·leetcode
小南家的青蛙6 小时前
Tomcat与Jetty深度对比
java·tomcat·jetty