那天别人问了我一个问题,关于单例模式的,由于之前了解的都是蜻蜓点水,所以重新复习了一次重新总结。

单例模式的写法总的来说有5种:懒汉,恶汉,枚举,双重校验锁,静态内部类

懒汉

 1 public class Signleton{
 2         private static Signleton instance;
 3         private Signleton(){}
 4         public static synchronized Sginleton getInstance(){
 5              if( instance == null ){
 6                 instance = new Signleton();
 7              }
 8              return instance;
 9         }
10 }

恶汉:

 1 public class Singleton {
 2         private Singleton instance = null;
 3            static {
 4                instance = new Singleton();
 5            }
 6            private Singleton (){}
 7            public static Singleton getInstance() {
 8                return this.instance;
 9         }
10     }  

双重校验锁:

 1 public class Singleton {
 2             private volatile static Singleton singleton;
 3             private Singleton (){}
 4             public static Singleton getSingleton() {
 5                 if (singleton == null) {
 6                       synchronized (Singleton.class) {
 7                           if (singleton == null) {
 8                               singleton = new Singleton();
 9                           }
10                       }
11                 }
12                 return singleton;
13             }
14     }  

枚举:

1 public enum Singleton {
2         INSTANCE;
3         public void whateverMethod() {}
4     }

静态内部类:

1 public class Singleton {
2         private static class SingletonHolder {
3            private static final Singleton INSTANCE = new Singleton();
4         }
5         private Singleton (){}
6         public static final Singleton getInstance() {
7             return SingletonHolder.INSTANCE;
8         }
9 }  

有兴趣的可以看这篇文章: http://stackoverflow.com/questions/70689/what-is-an-efficient-way-to-implement-a-singleton-pattern-in-java
the best way to do it is to use:
Since java5 : enum: 
Pre    java5 :other

转载于:https://www.cnblogs.com/m-xy/p/3725055.html

设计模式——“signleton”相关推荐

  1. 23种设计模式(一)单例模式

    2019独角兽企业重金招聘Python工程师标准>>> 定义 单例模式最初的定义出现于<设计模式>(艾迪生维斯理, 1994):"保证一个类仅有一个实例,并提供 ...

  2. Spring框架中的设计模式(四)

    适配器 当我们需要在给定场景下(也就是给定接口)想要不改变自身行为而又想做到一些事情的情况下(就是我给电也就是接口了,你来做事也就是各种电器),使用适配器设计模式(这里再说一点,就相当于我们再一个规章 ...

  3. .NET设计模式(7):创建型模式专题总结(Creational Pattern)

    概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模 ...

  4. 设计模式系列:小小总结

    概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模 ...

  5. 设计模式读书笔记汇总

    文章目录 一:简单工厂模式:代码无错就是优? 二:策略模式:出行(公交,打车...)(android中的动画) 三:装饰模式 ---->>>android源码中:Context和Co ...

  6. 安卓常用6种设计模式总结

    转载自https://blog.csdn.net/u012583459/article/details/47079529 和https://blog.csdn.net/u012583459/artic ...

  7. 《设计模式》学习笔记整理手册

    文章目录 一.GoF设计模式的分类 1.1 创建型 1.2 结构型 1.3 行为型 二.设计原则概述 2.1 面向对象设计原则概述: 2.2 单一职责原则 2.3 开闭原则 2.4 里氏代换原则 2. ...

  8. 并发编程——设计模式之单例模式

    这里写目录标题 单例模式 1. 饿汉式 1.1 代码 1.2 理解 1.3 总结 2. 懒汉式 2.1 代码 2.2 理解 2.3 总结 3. 懒汉式+同步 3.1 代码 3.2 理解 3.3 总结 ...

  9. 深入理解设计模式-单例模式(饿汉单例模式、懒汉单例模式、双锁单例模式)

    深入理解设计模式-双锁单例模式 文章目录 一.什么是单例模式 二.应用场景 三.优缺点 四.代码实现 总结 结尾 一.什么是单例模式 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个 ...

最新文章

  1. 使用深度学习方法实现面部表情包识别
  2. PYTHON的函数对参数解析分析
  3. 【采用】【科技金融】互金风控大数据盘点
  4. Spring boot介绍
  5. 【JFreeChart】JFreeChart简介
  6. VHDL交通灯控制器的设计
  7. Luogu P2577 [ZJOI2005]午餐
  8. JS 转换数字为大写
  9. 从外包公司到今日头条offer,含BATJM大厂
  10. [Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]
  11. vue+node前后端分离接口调用(初学者)
  12. pg数据库开启远程连接_疫情之下,开启在家办公模式,远程连接工具篇之向日葵...
  13. 基于单片机的智能排队叫号系统设计
  14. unlocker解锁虚拟机安装黑苹果出现权限错误问题permission denied
  15. Verilog语言生成4位伪随机码
  16. C# Winfrom MQTT 客户端与服务器【代码】
  17. 佩服Google敏锐和创意!人肉搜索引擎志愿者招募
  18. matlab实现机器学习算法-回归分析
  19. Openwrt Web gui LUCI 流程浅析
  20. 字节跳动面试:京东面试真题解析,薪资翻倍

热门文章

  1. 2.设计模式-桥接模式
  2. UnityShader13:渐变与遮罩
  3. OpenGL基础14:摄像机
  4. 51nod-1093:骆驼和香蕉
  5. win7系统下,磁盘之间合并
  6. 贺利坚老师汇编课程35笔记:[BX+SI]和[BX+DI]寻址
  7. 8086寄存器的配合使用
  8. 轻松三步教你配置oracle,Oracle Net Configuration Assistant 配置步骤简明教程
  9. datagrip连接oracle
  10. Educational Round 26 C. Two Seals