单例模式应该是最好理解的模式了,他保证一个类在全局只有一个实例,并且提供一个全局访问该实例的方法。对于线程池,日志这种就需要使用单例了,单例有两种实现方法,懒汉式和饿汉式,JVM中使用的是懒汉式,即需要的时候才进行创建。懒汉式创建单例的方法如下:

public class Singleton{//使用volatile避免指令重排private volatile static Singleton singleton;private Singleton(){}public static Singleton getInstance(){if(null == singleton){//使用synchronize只同步代码块,来达到最优的创建效果,因为这段创建代码只会执行一次synchronize(Singleton.class){if(null == singleton){singleton = new Singleton;}}}return singleton;}}

对于饿汉模式,只要在生成类的时候把实例创建出来就好了,需要使用的时候直接返回就好了:

public class Singleton{private static Singleton singleton = new Singleton();private Singleton(){}public static Singleton getInstance(){return singleton;}
}

很简单吧。

浅谈设计模式之单例模式相关推荐

  1. 浅谈设计模式之单例模式、适配器模式、抽象工厂模式

    带你读懂几种常见的设计模式 第三弹 本文已经是设计模式系列的第三篇文章了,今天来讲讲单例模式.抽象工厂模式和适配器模式. 1.单例模式 单例模式让一个类最多只有一个实例.具体的做法是: 让类的构造方法 ...

  2. java中单例的应用_浅谈Java中单例模式的几种应用

    目录 浅谈Java中单例模式的几种应用 第一种:懒汉式 第二种:饿汉式 第三种:双重检索式 第四种:注册登记式 第五种:内部类形式 浅谈Java中单例模式的几种应用 日常开发中,为了提高我们系统中对象 ...

  3. 【大话设计模式】——浅谈设计模式基础

    初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...

  4. 浅谈设计模式在iOS开发实战项目中的应用

    在我们日常的开发中设计模式伴随着项目的各个模块,巧妙地使用设计模式可以让我们写出更高效,简洁,优美的代码.可是因为对于设计模式的不熟悉,很多高效的设计模式并没有被很好地使用起来,而最近也正好在revi ...

  5. 菜鸟之路-浅谈设计模式之单例设计模式

    单例设计模式 定义:确保一个类仅仅有一个实例,并且自行实例化并向整个系统提供这个实例. 单例模式是一种经常使用的软件设计模式.在它的核心结构中仅仅包括一个被称为单例的特殊类. 通过单例模式能够保证系统 ...

  6. 浅谈设计模式及python实现

    设计模式及Python实现 设计模式是什么? Christopher Alexander:"每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样你就能一次又一次 ...

  7. 浅谈设计模式 | 先有鸡还是先有蛋?先有代码后有设计模式还是先有设计模式再写代码?

    前言 一.面向对象的三大特性 1. 封装 2.继承 3.多态 二.面向对象七个设计原则 1.单一职责原则 2.开放封闭原则 3.里氏替换原则 4.接口隔离原则 5.依赖倒置原则 6.合成复用原则 7. ...

  8. 浅谈设计模式在建安系统中的应用

    东湖项目接近尾声,一直想写一下对于该系统设计的感悟,今天就在这里写一写吧. 首先,评价一个系统的好坏,在我的心里有三个标准:第一是可扩展性,我把它放在第一位,因为没有哪个项目是不需要不断修改的,这是事 ...

  9. 浅谈设计模式01-策略模式

    2019独角兽企业重金招聘Python工程师标准>>> 一. 定义 最近开始研读Head First设计模式,这本书给人的感觉耳目一新,不容易犯困啊.今天和大家分享一下策略模式. 1 ...

最新文章

  1. sql 关联使用id还是code_使用sh格式化nginx访问日志并存入mysql
  2. c语言链表拆分,C语言拆分链表程序
  3. matlab转c++
  4. python如何输出两行_python pandas dataframe拆分行(某些行一行拆成多行)
  5. 2013_changsha_onsite
  6. LeetCode 6034. 数组的三角和
  7. 计算机网络中tdm是什么,计算机网络-复习题(1)
  8. java previous_java – 在枚举类型上实现`next`和`previous`的最好方法是什么?
  9. SQLite和NPoco的数据库初始化器
  10. CentOS 7以yum方式安装zabbix3.2及配置文件详解
  11. 《JDBC与Java数据库编程》pdf 附下载链接
  12. WORD中的格式控制符号
  13. c语言字符串把小写转换大写字母,c语言将字符串中的小写字母转换成大写字母...
  14. wago edz 下载_用电子枪制造的WeakAuras Wago.io桥
  15. 【可解释机器学习】-线性回归案例【基础版】(python代码)
  16. nginx配置Strict Transport Security
  17. 从输入url到页面返回到底发生了什么
  18. 怎么改造计算机玩游戏,大神请收下我的膝盖 牛人将红白机改造成PC玩游戏
  19. 2022年湖南省自考考试幼儿园教育活动设计与组织练习题及答案
  20. Dubbo—— 一个服务既是消费者又是提供者

热门文章

  1. ffmpeg实战教程(十)ffmpeg/camera实现最近很火的视频壁纸,相机壁纸
  2. A股和B股票的区别?
  3. bat添加修改注册表键值 批处理修改注册表项
  4. C 语言交换 a 和 b 值的 4 种方式
  5. (压缩包在本地目录或由链接请求)使用jszip解压文件或compressing解压文件到指定目录,写个node脚本
  6. 如何为你的企业选择示例性 Web 应用架构?
  7. RK3399+FPGA+MIPI 方案细节之subLVDS to MIPI处理
  8. Linux(GPU)显卡清理缓存
  9. python题目-统计出字符串中各字符出现的次数并以字典形式保存并排序
  10. 人行征信上贷款余额指的是什么?(图文)