简单了解单例模式

本文介绍了单例模式的概念和两种主要实现方式:饿汉式和懒汉式。饿汉式在类加载时创建对象,可能导致空间浪费;懒汉式在需要时创建,但在多线程环境下可能产生多个实例。为解决这个问题,引入了双重检查锁定(DCL懒汉式)和volatile关键字来确保线程安全和防止指令重排。最后提到了静态内部类作为单例模式的一种优化实现。
摘要由CSDN通过智能技术生成

一、前言

单例模式是指在内存中有且只会创建一次对象的设计模式,在程序中多次使用同一个对象且作用相同的时候,为了防止频繁的创建对象,单例模式可以让程序在内存中创建一个对象,让所有的调用者都共享这一单例对象。单例模式的类型有两种:懒汉式和饿汉式。

二 单例模式类型

饿汉式:在类加载的时候已经创建好该单例对象。
懒汉式:在需要使用对象的时候才会去创建对象

2.1 饿汉式:


//饿汉式
public class Hungry {
   
 
    /**
     * 构造器私有 拒绝别人创建这个对象
     */
    private Hungry() {
   
    }
 
    private final static Hungry HUNGRY = new Hungry();
 
    public static Hungry getInstance(){
   
        return HUNGRY;
    }

大家都知道饿汉式单例是程序启动的时候就已经创建好了对象,那么这样的会会有什么问题呢?有可能浪费空间,为什么呢?因为如果在该类中声明了许多内存空间,但却没有使用的话,就很浪费内存空间,因为饿汉式它是在程序启动的时候就已经创建好了。

2.2 懒汉式:

//懒汉式单例
public class LazySingle {
   
 
    private LazySingle(){
   
 
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值