设计模式1-单例模式

设计模式

设计模式本质上就是一种被广泛认可的、可复用的编程思想和经验总结,它提供了解决特定问题的"最佳实践"模板。(就是众多程序员的经验、总结出来的一套模版或者是思想)

单例模式

定义

确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,避免资源浪费。

场景

● api调用需要写appkey和appSecret的配置类

● 日志系统中的日志类,日志的写入(IO)

● 数据库连接

● 需要定义大量的静态常量和静态方法(如枚举类或者常量类)

● 应用程序的上下文缓存信息APPContext

代码

java 复制代码
class Singleton {

    //懒汉式
    private static Singleton instance = null;
    //禁止外部
    private Singleton(){}
    //懒汉式1  线程不安全模式
    public static Singleton getInstance_ThreadNotProtect(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }

    //懒汉式2 线程安全
    public static synchronized  Singleton  getInstance_ThreadProtect(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }

    //饿汉式
    //优点:实现简单,线程安全。
    //缺点:不是懒加载,如果这个实例很大且一直没被用到,会造成内存浪费。
    //为什么会造成内存浪费:这行代码在类初始化时执行,如果没有在后续使用那么这个就造成了无法回收
    private static Singleton singleton = new Singleton();
    //
    public static Singleton getSingleton(){
        return singleton;
    }
}

单例模式代码

相关推荐
消失的旧时光-19433 小时前
kmp需要技能
android·设计模式·kotlin
pcm1235674 小时前
java中的单例模式
java·开发语言·单例模式
JohnYan9 小时前
安全密钥(Security Key)和认证技术相关词汇表
后端·安全·设计模式
yinghuaqipao12 小时前
面向对象——设计模式(创建型)
android·java·设计模式
WaWaJie_Ngen12 小时前
【设计模式】代理模式(Proxy)
设计模式·代理模式
麦麦鸡腿堡13 小时前
Java的抽象类实践-模板设计模式
java·开发语言·设计模式
WaWaJie_Ngen13 小时前
【设计模式】外观模式/门面模式(Facaed)
设计模式·外观模式
Asort13 小时前
JavaScript设计模式(十九)——观察者模式 (Observer)
前端·javascript·设计模式
围巾哥萧尘14 小时前
英语老师的秘密武器:Trae智能体写作批改智能体 (改作文一条龙)🧣
设计模式
Miku1614 小时前
吴恩达Agentic AI课程Module1学习笔记
人工智能·设计模式·agent