23中设计模式之单例模式

简介: 23中设计模式之单例模式

所谓的单例模式就是再创建对象时候只允许创建一个对象!并且提供一个访问该实例的全局访问点

单例模式又分为饿汉式,懒汉式,静态内部类式,枚举式,双重检测锁式(由于JVM的底层内部模型愿意,偶尔会报错,所以不推荐使用)

下面我们来看一下饿汉式单例模式:

public class SingletonDemo01 {
   
    private static SingletonDemo01 singleton=new SingletonDemo01();

    private SingletonDemo01(){
   

    }
    //因为加载类时是天然的线程安全的,所以不用加同步块
    public static SingletonDemo01 getInstance(){
   

        return singleton;
    } 

}

懒汉式单例模式:

public class SingletonDemo01 {
   
    private static SingletonDemo01 singleton;

    private SingletonDemo01(){
   

    }
    //加同步块,防止不同步造成加载多个对象,这样就没有单例的实际意义,也可能会造成错误
    public static synchronized SingletonDemo01 getInstance(){
   
        if(singleton == null){
   
            singleton = new SingletonDemo01();
        }
        return singleton;
    } 
}

静态内部类式单例模式

public class SingletonDemo01 {
   
   //静态的内部类,实现的对象的创建
    private static class SingletonDemoInstance{
   
        //此处的final可加可不加
        private static final SingletonDemo01 singleton=new SingletonDemo01();
    }
    private SingletonDemo01(){
   }
    public static SingletonDemo01 getInstance(){
   
        return SingletonDemoInstance.singleton;
    }
}

PS:

1、外部类有static 属性,则不会像创建饿汉式那样立即加载对象了,只有真正的调用到getInstance()才会加载静态内部类,加载时候是线程安全的,instance是static final
类型的,保证了内存中只有一个这样的实例存在,而且只能被赋值一次,从而保证的线程的安全
2、兼备了并发高效调用和延迟加载的优势。

目录
相关文章
|
21天前
|
设计模式 安全 Java
【设计模式系列笔记】单例模式
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点,以便全局范围内访问这个实例。单例模式的目标是限制一个类的实例化,确保在整个应用程序中只有一个实例存在,并提供对这个唯一实例的全局访问点。这对于控制对资源的访问、限制特定类的实例数量等场景非常有用。
122 5
|
2月前
|
设计模式 安全 测试技术
【C/C++ 设计模式 单例】单例模式的选择策略:何时使用,何时避免
【C/C++ 设计模式 单例】单例模式的选择策略:何时使用,何时避免
66 0
|
2月前
|
设计模式 缓存 安全
【设计模式】单例模式:确保类只有一个实例
【设计模式】单例模式:确保类只有一个实例
25 0
|
1月前
|
设计模式 PHP
php设计模式--单例模式(三)
php设计模式--单例模式(三)
13 0
|
15天前
|
设计模式 安全 Java
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
|
4月前
|
设计模式 安全 Java
设计模式-单例模式
设计模式-单例模式
38 0
|
2月前
|
设计模式 安全 Java
设计模式之单例模式
设计模式之单例模式
|
12天前
|
设计模式 安全 Java
【设计模式学习】单例模式和工厂模式
【设计模式学习】单例模式和工厂模式
|
13天前
|
设计模式 安全 Java
|
14天前
|
设计模式 存储 安全
Java 设计模式:深入单例模式的理解与应用
【4月更文挑战第27天】单例模式是一种常用的设计模式,在 Java 开发中扮演着重要角色。此模式的主要目的是保证一个类只有一个实例,并提供一个全局访问点。
20 0