单例模式的总结

常规模式:有属性/构造方法/普通方法,也可以在类中执行主方法,也可以在test类中执行主方法

单例模式是什么?

复制代码
单例模式:类只有1个对象;保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是在内存中 仅会创建一次对象 的设计模式

特点:

成员是 私有的静态的

构造方法是 私有的

对外暴露的获取访问是 公有的静态的,所以对这个类可以示例化多次

使用场景?

使用场景:实际业务只有1个对象的场景,如数据库连接池,redis连接池等

与常规模式有什么区别?

常规模式:因为只新建一个类,所以在调用时,调用几次就创建几个对象,存储不同的内存

单例模式:因为需要为单例模式,所以在创建时,需要判断是否只创建1个,再次创建就无效,所以无论调用多少次,对象只有1个,内存也只占用1次

因为每次请求都会新示例化一个类,所以请求后再内存里存了两个类

增加判断后就只有一个类,也符合单例模式

若s不为空就新建示例化,如果已经新建过,就不再创建直接返回

所以无论你创建多少个对象,在内存里只有1个

其中初始化对象时,因为创建的类方法就是static代码块,所以对象也需要是static的,不然无法使用

因为是多线程,多个对象过来请求,可以增加synchronized(使同步)

使用在什么场景?

redis连接池、数据库连接池都是唯一的,所以只有1个数据库连接池,无论是多少个线程,都不会代码出错

其中代码步骤:

1、初始化一个数据库连接池类s

2、构造方法私有

3、构建数据库连接池类s=new 数据库连接池类()其中需要判断,如果新建一次就创建,4、再次创建就不能再创建;

5、构建数据库连接池的属性:连接池最大值,最小值,连接池时间等

相关推荐
我言秋日胜春朝★10 分钟前
【C++11】特殊类的设计 && 单例模式 && 类型转换
开发语言·c++·单例模式
莫魂魂18 小时前
009_抽象类和接口
java·开发语言·单例模式
2301_794461573 天前
详细分析单例模式
单例模式
Excuse_lighttime3 天前
JAVA单例模式
java·开发语言·单例模式
Amd7943 天前
FastAPI依赖注入实践:工厂模式与实例复用的优化策略
单例模式·性能优化·fastapi·工厂模式·依赖注入·多租户系统·实例复用
照书抄代码3 天前
C++11可变参数模板单例模式
开发语言·c++·单例模式·c++11
程序员沉梦听雨4 天前
设计模式之单例模式
单例模式·设计模式
rainFFrain5 天前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
UpUpUp……6 天前
特殊类的设计/单例模式
开发语言·c++·笔记·单例模式
卡戎-caryon6 天前
【Linux网络与网络编程】03.UDP Socket编程
linux·服务器·网络·笔记·单例模式·udp·网络通信