单例模式之饿汉式

文章目录

单例模式(饿汉式)

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

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

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

代码

静态变量创建实例代码

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;
    }
}

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

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

相关推荐
Knight_AL几秒前
Java 可变参数 Object... args 详解:原理、用法与实战场景
java·开发语言·python
风月歌1 分钟前
基于小程序的超市购物系统设计与实现源码(java+小程序+mysql+vue+文档)
java·mysql·微信小程序·小程序·毕业设计·源码
再来一根辣条4 分钟前
Stream是怎么运行的?
java
C雨后彩虹4 分钟前
幼儿园分班
java·数据结构·算法·华为·面试
黄俊懿6 分钟前
【深入理解SpringCloud微服务】Gateway源码解析
java·后端·spring·spring cloud·微服务·gateway·架构师
Yupureki8 分钟前
《算法竞赛从入门到国奖》算法基础:入门篇-二分算法
c语言·开发语言·数据结构·c++·算法·visual studio
xwill*10 分钟前
Python 的类型提示(type hint)
开发语言·pytorch·python
悟能不能悟11 分钟前
java list.addAll介绍
java·windows·list
汉堡go13 分钟前
python_chapter3
开发语言·python
游戏23人生13 分钟前
c++ 语言教程——16面向对象设计模式(五)
开发语言·c++·设计模式