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

单例设计模式

什么是设计模式

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

单例模式

假设A类是个单例类

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

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

饿汉单例

一定要把构造器私有化

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


具体实现:

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

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

懒汉单例

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

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


具体实现:

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

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

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

一种错误写法:

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

所以需要if判断

相关推荐
imDwAaY12 小时前
贝叶斯网络到粒子滤波Python算法实现 CS188 Proj4 学习笔记
网络·人工智能·笔记·python·学习·算法
咸甜适中13 小时前
rust语言学习笔记Trait(十五)Drop(释放资源)
笔记·学习·rust
IT笔记13 小时前
【Rust】 Rust宏学习笔记
笔记·学习·rust
tianxingjian201913 小时前
从欧盟电池法新规看QFD:如何将合规需求转化为技术特性?
笔记
喜樂的CC14 小时前
NestJS图解笔记
笔记
智者知已应修善业14 小时前
【51单片机数码管驱动2位显示0-99按键3短按+1长按+10按键4短按-1长按清零,按键不影响数码管显示】2023-8-16
c++·经验分享·笔记·算法·51单片机
whyTeaFo14 小时前
MIT 6.1810: xv6 book Chapter5: Page faults 笔记
笔记
rime_neko14 小时前
开发部署笔记
笔记
老码观察14 小时前
设计模式实战解读(十一):外观模式——给复杂系统套一层壳
python·设计模式·外观模式
AOwhisky15 小时前
MySQL 学习笔记(第三期):SQL 语言之数据操作与单表查询
linux·运维·笔记·sql·学习·mysql·云计算