设计模式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;
    }
}

单例模式代码

相关推荐
妙蛙种子31141 分钟前
【Java设计模式 | 创建者模式】 原型模式
java·开发语言·后端·设计模式·原型模式
zhaoshuzhaoshu2 小时前
设计模式之行为型设计模式详解
python·设计模式
楼田莉子3 小时前
设计模式:构造器模式
开发语言·c++·后端·学习·设计模式
小程故事多_804 小时前
从Claude Code源码泄露,读懂12个可复用的Agentic Harness设计模式(生产级落地指南)
人工智能·设计模式·aigc·ai编程·harness
We་ct1 天前
JS手撕:函数进阶 & 设计模式解析
开发语言·前端·javascript·设计模式·面试·前端框架
A.A呐1 天前
【C++第二十八章】单例模式
c++·单例模式
冷小鱼1 天前
设计模式全景指南:23种模式深度解析与Python实现
设计模式
楼田莉子1 天前
设计模式:创建型设计模式简介
服务器·开发语言·c++·设计模式