设计模式 1 - 单例模式:附全套 Git 简洁代码
admin
2024-03-31 05:33:00

题外话

      最近看了武志平的视频,终于明白自己出现一定程度厌学的原因:对学习十分功利,而忘记感受学习内容的本身。
      在以前的我看来,所谓学习算法,设计模式,都是为了找到一份好工作罢了。而且实际要学的内容非常多,我有时会直接开摆:啥都不会不是更好?反正又不是没有工作。当然了,这段时间虽然生了点病,但无论代码还是课外书籍都有学习,只是一直存在一定程的厌学情绪。
那么,如果稍稍不看功利性,而在代码中找到觉得很棒,很有趣的内容,那是什么呢?我内心的答案,是设计模式,是算法。
      于是,我决定开始重新学习,复习设计模式,感受这智慧的结晶。

正文

      这是我在 B站视频 五分钟学设计模式,《大话设计模式》,菜鸟教程 学习到的内容,或是 copy,或是自己想,写的代码。都写上了自己的思考和问题。更多的应该算是自己的学习笔记,所以会有些混乱。 侵删
      Gitee 仓库链接: https://gitee.com/jiweilai/design-mode

questions:
1 什么时候要用单例模式
无状态的工具类
- Windows的TaskManager(任务管理器)就是很的单例模式。我们是不能打开两个windowstaskmanager。
- windows的RecycleBin(回收站)也是的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。
- 网站的计数器,通常采用单例模式实现,否则难以同步。

2 有哪几种实现方式

  • 饿汉式
  • 懒汉式

3 单例模式有几个特点

  • private 初始化方法
  • private static 变量
  • 如果是饿汉式实现, 需要 volatile 修饰,防止创建对象时线程重排序导致混乱
  • 双重检查锁 --> if (… == null) 里面 synchronized { if (… == null)}
package singlemode;public class SingleMode {// 饿汉式private static SingleMode singleton = new SingleMode();private SingleMode() {}public static SingleMode getInstance() {return singleton;}}class LazySingleMode {private volatile static LazySingleMode singleton = null;public static LazySingleMode getInstance() {if (null == singleton){synchronized (LazySingleMode.class) {if (null == singleton) {singleton = new LazySingleMode();}}}return singleton;}
}

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...