java学习 单例模式

一.设计模式

1.1 概述

代表了最佳实践方式,通常被有经验的面向对象的软件开发工作人员采用 ​ 是众多有经验的开发人家,经过很长时间的使用和错误总结出来的,用来解决一系列特定问题 ​ 它不是语法规范,而且一套用来提高代码的复用性、可读性、可维护性、鲁棒性及安全性的解决方案 ​ 目前比较成熟的有23种

二.单例模式

2.1 目的

多次获取,只创建一个实例化对象,获取到的是同一个对象

2.2 创建思路

1.构造方法私有化,让外部无法创建对象

2.对外提供一个用于获取对象的静态方法

3.提供一个静态变量,保存创建的对象

2.3 应用场景

1.当类的创建成本较高或实例化过程复杂时,适合使用单例模式。

2.当一个类需要在整个系统中提供唯一的全局访问点,如配置管理、数据库连接池等。

3.当需要频繁访问且无需多个实例的对象,如缓存、日志等。

3.2.4 两种模式

1.懒汉模式 懒汉式属于一种延迟加载的单例模式,它的特点是在第一次使用时创建实例对象,而不是在类加载时就创建。

复制代码
public static Singleton{
    private Singleton(){} 
    private static Singleton obj = null;
    
    public static Singleton getlnstance(){
        if(obj == null){
            obj = new Singleton();
        }
        return obj;
    }
}

2.饿汉模式 饿汉式是一种在类加载时就创建实例的单例模式。它的特点是无论是否会被使用到,实例对象都在类加载时被创建。

复制代码
public static Singleton{
    private Singleton(){} 
    private static Singleton obj = new Singleton();
    
    public static Singleton getlnstance(){
        return obj;
    }
}
相关推荐
脱胎换骨-军哥9 小时前
C++零成本抽象理论深度拆解:现代C++如何在不牺牲性能的前提下提供高级语法封装
java·开发语言·c++
lbb 小魔仙9 小时前
VS Code Python 高级调试技巧:从入门到精通
开发语言·python
我是唐青枫9 小时前
Java Netty 实战指南:从 NIO 线程模型到 TCP 编解码和心跳机制
java·tcp/ip·nio
方便面不加香菜9 小时前
C++ 模板进阶
开发语言·c++
小白说大模型9 小时前
从向量嵌入到复杂 Agent:LLM、LangChain、LangGraph 完整科普
java·开发语言·人工智能·gpt·深度学习·langchain
豆浆D油条10 小时前
QT容器类QList调用erase崩溃
开发语言·qt·rpc
jinyishu_10 小时前
C++ 多态完全指南:从基础语法到底层原理
开发语言·c++·程序人生·面试
zhanghaha131411 小时前
Python语言基础:4_数据类型转换
java·前端·python
larance11 小时前
机器学习特征预处理之标准化/归一化
开发语言·python·机器学习
农村小镇哥11 小时前
C#中的字符串格式化
服务器·开发语言·c#