设计模式-单例模式

单例模式分为饿汉式、懒汉式

饿汉式:类加载时直接创建实例,类加载时已经生成示例,所以线程安全

java 复制代码
public class SingletonOne {

    //类加载时初始化示例
    private static SingletonOne instance = new SingletonOne();
    private SingletonOne(){};
    private static SingletonOne getInstance() {
        return instance;
    }

    public static void main(String[] args) {
        SingletonOne s1 = getInstance();
        SingletonOne s2 = getInstance();
        System.out.println(s1 == s2);//true
    }
}

懒汉式:用到实例的时候再创建,多线程场景下,创建出的实例可能不唯一,违反了单一实例原则

下方测试代码在多线程模式下,s1可能不等于s2

java 复制代码
public class SingletonTwo {

    private static SingletonTwo instance = null;
    private SingletonTwo(){};
    //用到实例时再创建
    private static SingletonTwo getInstance() {
        if(instance == null) {
            instance = new SingletonTwo();
        }
        return instance;
    }

    public static void main(String[] args) {
        SingletonTwo s1 = getInstance();
        SingletonTwo s2 = getInstance();
        System.out.println(s1 == s2);//true
    }
}
相关推荐
Real-Staok20 小时前
(集合)C / C++ 设计模式综合
单例模式·设计模式·代理模式
冉佳驹1 天前
C++11 ——— 线程库与单例模式的原理、实现及线程安全设计
c++·单例模式·饿汉模式·懒汉模式·c++线程库·c++互斥锁·c++条件变量
Yupureki2 天前
《C++实战项目-高并发内存池》4.CentralCache构造
c语言·开发语言·c++·单例模式·github
阿珊和她的猫2 天前
单例模式:确保唯一性与全局访问的设计方案
单例模式·状态模式
Yupureki3 天前
《C++实战项目-高并发内存池》5.PageCache构造
c语言·开发语言·c++·单例模式·github
bmseven3 天前
23种设计模式 - 单例模式(Singleton)
单例模式
2301_803554523 天前
单例模式以及面试可能问的--精写
单例模式·面试·职场和发展
Serene_Dream3 天前
深度解析设计模式:单例模式(Singleton Pattern)
单例模式·设计模式
白藏y3 天前
【C++】特殊类设计与单例模式
c++·单例模式
朱一头zcy3 天前
设计模式入门:最简单的单例模式
笔记·单例模式·设计模式