设计模式之单例模式

本文探讨了设计模式中的单例模式,强调理解其意义和应用场景的重要性。单例模式特点是确保类只有一个实例,并提供全局访问点。文章详细介绍了懒汉式和饿汉式两种实现方式,其中饿汉式在类加载时即初始化,天生线程安全,而懒汉式则在首次调用时初始化,需要额外处理线程安全问题。这两种方式在资源加载和性能上有所区别,适用于不同场景。
摘要由CSDN通过智能技术生成

首先要理解单例模式的意义,以及使用场景(这需要实战经验,多看代码,看别人在什么时候使用了单例模式,思考为什么在那里使用单例模式)。而这是最难的,一定要多总结,把所有遇到的单例模式的情景都可以总结进来
然后要知道单例模式的特点,理解什么样的定义是单例模式
最后要会写单例模式
一、单例模式特点

1、单例类只能有一个实例
2、单例类必须自己创建自己唯一的实例
3、单例类必须给所有其他对象提供该实例

二、单例模式的几种写法
懒汉式单例

// 懒汉式单例,在第一次调用时实例化自己
public class Singleton{
    private Singleton(){}
    private static Singleton single = null;
    // 静态工厂方法
    public static Singleton getInstance(){
        if(single == null) {
            single = new Singleton();
        }
        return single;
    }
} 

二、饿汉式单例

public class Singleton{
    private Singleton(){}
    private static final Singleton single = new Singleton();
    public static Singleton getInstance(){
        return single;
    }
}

饿汉式在类初始化时就已经创建好一个静态实例供系统使用,以后不再改变,所以天生是线程安全的。
三、饿汉式和懒汉式的区别
1、饿汉式就是一旦类加载,就将单例初始化完成,保证getInstance()时,单例已经存在。
2、懒汉式就是比较懒,只有在调用getInstance()时,才会去初始化单例。
再从以下两点区分这两种创建单例的方式
(一)从线程安全来看:
饿汉式是天生线程安全的,可以放心的在多线程中使用。
懒汉式是非线程安全的,需要通过代码实现线程安全,有以上列出的几种写法,这几种写法在资源加载和性能上有一定的区别。
(二)从资源加载和性能来看
饿汉式在类创建的同时,就已经完成单例的初始化,不管以后会不会用到该单例对象,都会占用一定的内存,但相应的,在第一次调用时也会更快,因为已经资源加载完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值