设计模式入门:最简单的单例模式

单例设计模式

什么是设计模式

设计模式是针对软件设计中反复出现的问题 总结出的一套可复用、可扩展、易维护的通用解决方案

单例模式

假设A类是个单例类

那就要知道 通过A拿对象 拿到的永远都是同一个对象

单例的实现方式很多 比如饿汉单例模式 懒汉单例模式等等

饿汉单例

一定要把构造器私有化

要获取的单例对象 随着单例类SingleInstance类加载的时候 就已经完成实例化


具体实现:

执行到Hungry.instance 用类名去拿静态资源的时候
肯定已经完成Hungry的类加载 与此同时 instance对象就同步地实例化了

且静态变量只加载一次 所以每次.instance拿到的都是同一个对象

懒汉单例

在真正需要单例对象的时候 才去创建一个对象(延迟加载对象)

懒汉单例最好把静态的单例对象也私有化 防止可能用类名.的方式直接拿到一个null


具体实现:

s1想获取对象的时候 判断是null 则进去new一个

而到了s2 s3的时候 不进去 直接返回之前new的对象

所以永远只会有同一个对象(输出结果表明 构造器也只被调用了一次)

一种错误写法:

每次调用此方法 new出来的都是新的对象

所以需要if判断

相关推荐
智者知已应修善业1 天前
【51单片机89C51及74LS273、74LS244组成】2022-5-28
c++·经验分享·笔记·算法·51单片机
奋斗的小乌龟1 天前
langchain4j笔记-06
笔记
·醉挽清风·1 天前
学习笔记—MySQL—库表操作
笔记·学习·mysql
weixin_451431561 天前
【学习笔记】微博视频页面ajax请求与响应数据分析
笔记·学习·音视频
快乐得小萝卜1 天前
OpenVLA 论文精读笔记
笔记
叶~小兮1 天前
K8S进阶核心综合学习笔记(持久化存储+特殊容器+调度管理)
笔记·学习·kubernetes
Skylwn1 天前
保姆级教程之将 GitHub Models 接入 NewAPI
笔记·github
江米小枣tonylua1 天前
从红绿灯到方向盘:TDD 在 AI 时代的新角色
前端·设计模式·ai编程
脆皮炸鸡7551 天前
库制作与原理~动态链接
linux·开发语言·经验分享·笔记·学习方法
nnsix1 天前
设计模式 - 工厂模式 笔记
笔记·设计模式