JAVA 23种设计设计模式---单例模式

本文深入解析单例模式的两种实现方式:饿汉式与懒汉式。饿汉式单例在类加载时即完成初始化,而懒汉式则在首次使用时才进行初始化,但存在线程安全问题。文章通过具体代码示例展示了两种模式的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式有两种  第一种:饿汉式单例模式   第二种:懒汉式单例模式

概念:在它的核心构建中包含一个被称为单例的特殊类

我们在使用单例模式时只要抓住以下三个特点就可以了!!

特点:

1.单例类只能有一个实例。构造方法限定为private从而避免类在外部被实例化。

2.单例类必须自己创建自己的唯一实例。

3.单列类必须给所有其他对象提供这一实例。

代码结构:

饿汉式:

package com.zxf.single;
/**
 * 单例模式就是把当前类变成一个实例  
 * 单例模式有两种 1.饿汉式单例  2.懒汉式单例
 * @author Administrator
 * 下面是饿汉式单例模式发  在类加载的时候初始化
 */
public class Singleton {
    //私有构造
    private  Singleton(){
        
    }
    //在类加载的时候创建   写法1  
    private static Singleton single = new Singleton();
    /*写法二  使用静态块  静态块里边的内容在类加载的时候直接创建
    private static Singleton single = null;
    static{
        single = new Singleton();
    }*/
    //提供共有方法供外部使用
    public static Singleton getInstance(){
        return single;
    }
}

懒汉式:

package com.zxf.single;
/**
 * 懒汉式单例模式
 * 在类加载的时候不初始化,只有当使用的时候才初始化
 * @author Administrator
 * 注:在多线程的环境下线程不安全   解决方法为 使用同步锁(这里只提示,不做演示)
 */
public class Singleton2 {
    //私有构造
    private Singleton2(){
        
    }
    private static Singleton2 single= null;
    //提供共有方法供外部访问
    public static Singleton2 getInstance(){
        if(single==null){
            single = new Singleton2();
        }
        return single;
    }
}

测试类:

package com.zxf.single;

public class Test {
    public static void main(String[] args) {
        //饿汉式单例
        System.out.println(Singleton.getInstance());
        //懒汉式单例
        System.out.println(Singleton2.getInstance());
    }
}

运行结果:

至此,单例模式结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值