[Java基础揉碎]单例模式

目录

什么是设计模式

什么是单例模式

饿汉式与懒汉式

饿汉式vs懒汉式

懒汉式存在线程安全问题


什么是设计模式

1.静态方法和属性的经典使用

2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、 以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索

什么是单例模式

1.所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法

2.单例模式有两种方式:

1)饿汉式

2)懒汉式

饿汉式与懒汉式

具体步骤:

1)构造器私有化

2)类的内部创建对象

3)向外暴露一个静态的公共方法。getlnstance

  1. 代码实现 class

*** 饿汉式实现代码:

// 为了能够在静态方法中返回instance, 所以属性必须要static修饰

// 之所以叫饿汉式是因为一旦这个类被加载对象就创建出来了

*** 懒汉式实现代码:

// 懒汉式就是在属性不直接new对象, 在静态方法当中判断为null时再去创建对象, 这样在这个类信息被加载的时候不会立马创建对象, 而是在调用这个静态方法的时候被创建, 而且后续调用这个方法因为上一次调用已经创建了对象在null判断的条件下直接返回第一次创建的对象, 实现单例

饿汉式vs懒汉式

1.二者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例, 而懒汉式是在使用时才创建

2.饿汉式不存在线程安全问题,懒汉式存在线程安全问题

3.饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题

4.在我们javaSE标准类中, java.lang.Runtime就是经典的单例模式

懒汉式存在线程安全问题

假设此时存在三个线程同时去掉getInstance方法, 同时都进入到了if判断, 当第一个进去还在new Cat的时候, 还在创建进行中没有创建好, 第二个线程进去了也在new Cat ,第三个同理, 此时就会创建多个对象, 单例模式就被破坏了, 所以说存在线程安全问题

相关推荐
我爱挣钱我也要早睡!13 小时前
Java 复习笔记
java·开发语言·笔记
Yang-Never14 小时前
Kotlin协程 -> Job.join() 完整流程图与核心源码分析
android·开发语言·kotlin·android studio
AD钙奶-lalala15 小时前
Mac OS上搭建 http server
java
TomCode先生16 小时前
c#动态树形表达式详解
开发语言·c#
高-老师17 小时前
基于R语言的物种气候生态位动态量化与分布特征模拟
开发语言·r语言·物种气候
大翻哥哥17 小时前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
weixin_4378309418 小时前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
鹿鹿学长18 小时前
2025年全国大学生数学建模竞赛(C题) 建模解析|婴儿染色体数学建模|小鹿学长带队指引全代码文章与思路
c语言·开发语言·数学建模
zhousenshan18 小时前
Python爬虫常用框架
开发语言·爬虫·python
皮皮林55119 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot