设计模式-单例模式

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

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

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
    }
}
相关推荐
桥豆麻袋93933 小时前
Javascript 单例模式
开发语言·javascript·单例模式
不会编程的小江江4 小时前
【设计模式】单例模式
单例模式·设计模式
了不起的杰2 天前
[C++][设计模式] : 单例模式(饿汉和懒汉)
c++·单例模式·设计模式
我要打打代码4 天前
0610_特性和反射_加密和解密_单例模式
单例模式·c#
青衫客364 天前
创建型模式-单例模式
java·单例模式
秋田君5 天前
深入理解JavaScript设计模式之单例模式
javascript·单例模式·设计模式
~山有木兮6 天前
C++设计模式 - 单例模式
c++·单例模式·设计模式
周某某~6 天前
二.单例模式‌
java·单例模式·设计模式
摸鱼仙人~6 天前
深入理解Java单例模式:确保类只有一个实例
java·javascript·单例模式
十五年专注C++开发6 天前
设计模式之单例模式(二): 心得体会
开发语言·c++·单例模式·设计模式