单例模式之饿汉式

文章目录

单例模式(饿汉式)

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

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

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

代码

静态变量创建实例代码

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

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

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

相关推荐
LCG元1 分钟前
Istio - 服务网格流量治理深度解析:灰度发布 / 故障注入配置实践
java·数据库·istio
hef2885 分钟前
Java Switch和Break语句用法详解:从入门到实战
java·开发语言
ABCDEEE711 分钟前
3.RAG
java·linux·服务器
techdashen12 分钟前
在 Rust 异步接口的丛林中生存:从同步 I/O 到手写异步状态机
开发语言·后端·rust
SuniaWang13 分钟前
《Agentx专栏》03-架构设计:AgentX的六层架构是如何生长出来的
java·数据库·redis·docker·ai·架构
EnCi Zheng16 分钟前
09a-斯坦福 CS336 作业一:BPE分词器
开发语言·python·算法
Refrain_zc28 分钟前
Android开发在线音频播放器之章节一 AudioPlayerManager
java
Refrain_zc29 分钟前
Android开发Room数据库使用(可复制)
java
大波V529 分钟前
claude-code cli 跳过登录
java·服务器·前端
小江的记录本31 分钟前
【Kafka核心】Kafka 3.0+ KRaft模式(替代ZooKeeper)核心原理与优势
java·数据库·分布式·后端·zookeeper·kafka·rabbitmq