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

单例模式代码

相关推荐
geovindu1 天前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
ttod_qzstudio1 天前
【软考设计模式】组合模式:“部分-整体“层次结构与树形对象统一操作精讲
设计模式·组合模式
ttod_qzstudio1 天前
【软考设计模式】装饰模式:“套娃“式增强与动态职责扩展精讲
设计模式·装饰模式
烬羽1 天前
MCP 多服务器架构实战:一个 Agent 同时操控地图、浏览器和文件
设计模式·设计
阿pin1 天前
Android随笔-常用的设计模式
android·设计模式
儒雅的名1 天前
GoF设计模式——策略模式
设计模式·bash·策略模式
折哥的程序人生 · 物流技术专研2 天前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
jsonbro2 天前
手把手带你实现发布订阅模式
前端·vue.js·设计模式
workflower2 天前
室内外配送机器人-应用路径
人工智能·机器学习·设计模式·矩阵·自动化
ttod_qzstudio2 天前
【软考设计模式】原型模式:“克隆“对象与深拷贝、浅拷贝精讲
设计模式·原型模式