设计模式——“signleton”
那天别人问了我一个问题,关于单例模式的,由于之前了解的都是蜻蜓点水,所以重新复习了一次重新总结。
单例模式的写法总的来说有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”相关推荐
- 23种设计模式(一)单例模式
2019独角兽企业重金招聘Python工程师标准>>> 定义 单例模式最初的定义出现于<设计模式>(艾迪生维斯理, 1994):"保证一个类仅有一个实例,并提供 ...
- Spring框架中的设计模式(四)
适配器 当我们需要在给定场景下(也就是给定接口)想要不改变自身行为而又想做到一些事情的情况下(就是我给电也就是接口了,你来做事也就是各种电器),使用适配器设计模式(这里再说一点,就相当于我们再一个规章 ...
- .NET设计模式(7):创建型模式专题总结(Creational Pattern)
概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模 ...
- 设计模式系列:小小总结
概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模 ...
- 设计模式读书笔记汇总
文章目录 一:简单工厂模式:代码无错就是优? 二:策略模式:出行(公交,打车...)(android中的动画) 三:装饰模式 ---->>>android源码中:Context和Co ...
- 安卓常用6种设计模式总结
转载自https://blog.csdn.net/u012583459/article/details/47079529 和https://blog.csdn.net/u012583459/artic ...
- 《设计模式》学习笔记整理手册
文章目录 一.GoF设计模式的分类 1.1 创建型 1.2 结构型 1.3 行为型 二.设计原则概述 2.1 面向对象设计原则概述: 2.2 单一职责原则 2.3 开闭原则 2.4 里氏代换原则 2. ...
- 并发编程——设计模式之单例模式
这里写目录标题 单例模式 1. 饿汉式 1.1 代码 1.2 理解 1.3 总结 2. 懒汉式 2.1 代码 2.2 理解 2.3 总结 3. 懒汉式+同步 3.1 代码 3.2 理解 3.3 总结 ...
- 深入理解设计模式-单例模式(饿汉单例模式、懒汉单例模式、双锁单例模式)
深入理解设计模式-双锁单例模式 文章目录 一.什么是单例模式 二.应用场景 三.优缺点 四.代码实现 总结 结尾 一.什么是单例模式 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个 ...
最新文章
- 使用深度学习方法实现面部表情包识别
- PYTHON的函数对参数解析分析
- 【采用】【科技金融】互金风控大数据盘点
- Spring boot介绍
- 【JFreeChart】JFreeChart简介
- VHDL交通灯控制器的设计
- Luogu P2577 [ZJOI2005]午餐
- JS 转换数字为大写
- 从外包公司到今日头条offer,含BATJM大厂
- [Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]
- vue+node前后端分离接口调用(初学者)
- pg数据库开启远程连接_疫情之下,开启在家办公模式,远程连接工具篇之向日葵...
- 基于单片机的智能排队叫号系统设计
- unlocker解锁虚拟机安装黑苹果出现权限错误问题permission denied
- Verilog语言生成4位伪随机码
- C# Winfrom MQTT 客户端与服务器【代码】
- 佩服Google敏锐和创意!人肉搜索引擎志愿者招募
- matlab实现机器学习算法-回归分析
- Openwrt Web gui LUCI 流程浅析
- 字节跳动面试:京东面试真题解析,薪资翻倍