java设置模式--单例模式
来源:互联网 发布:神州泰岳 知乎 编辑:程序博客网 时间:2024/04/27 01:16
单例模式算的上是一种最简单的设计模式了,甚至有些爸爸认为它都算不上是一种模式,顶多算的上算是一种设计技巧。
所谓单例模式,就是一个类有且只能有一个实例,他需要自行创建一个实例并且开放给系统。这种设计模式在我们的项目中十分常见,比如多线程的线程池,比如数据库的连接
池等等。
单例模式能够保证一个类仅有唯一的实例,并提供一个全局访问点。
对于单例模式,这里介绍五种实现方式。
1.懒汉模式:(类加载时不初始化,类加载快,对象获取较慢)
public class Test { private static Test intance; private Test(){ //私有构造函数 } public static synchronized Test getInstance(){//静态,同步,公开访问点 if(intance == null){ intance = new Test(); } return intance; }}2.饿汉模式(在类加载时就完成了初始化,类加载较慢,获取对象块)
public class Test { private static Test instance = new Test();//静态私有成员,已初始化 private Test() { //私有构造函数 } public static Test getInstance(){ //静态,不用同步(类加载时已初始化,不会有多线程的问题) return instance; } }
3.双重锁模式(在同步内外分别加一次instance == null 的判断,有两次检验,所以称之为双重检验锁)
public class Test { private volatile static Test instance; private Test (){} public static Test getSingleton() { if (instance == null) { synchronized (Test.class) { if (instance == null) { instance = new Test(); } } } return instance; }}
4.静态内部类(一种比较推荐的方法,不存在线程安全问题,同时也没有性能上的缺陷)
public class Test { private static class SingletonHolder { private static final Test INSTANCE = new Test(); } private Test (){} public static final Test getInstance() { return SingletonHolder.INSTANCE; } }
5.枚举
枚举是jdk1.5以后所添加的新特性,写法简单,没有线程安全问题,但是用的人比较少,也不知道为什么。
public enum Test { INSTANCE;}
参考文献:http://blog.csdn.net/nsw911439370/article/details/50456231
1 0
- java设置模式--单例模式
- java设置模式-单例模式
- 设置模式-单例模式
- 单例设置模式
- java模式--单例模式
- java单例模式
- Java单例模式
- java单例模式
- java单例模式
- Java单例模式
- Java单例模式
- java单例模式
- Java单例模式
- java 单例模式
- java单例模式
- java单例模式
- java单例模式
- java 单例模式
- 异或运算的经典算法题:找出数组中只出现一次的数字,其它数字都出现了两次
- 三层架构-循序渐进
- 查询、关键字
- 在线购物领域类图
- js适配屏幕大小
- java设置模式--单例模式
- Date对象之将时间转为毫秒数的方法对比
- haffuman 编码c++实现
- MyEclipse中Web项目的重命名问题
- Ubuntu下安装单机版Storm运行环境
- poj 3264 Balanced Lineup (RMQ算法 模板题)
- 程序员面试金典——高度最小的BST
- 给EditText的drawableRight属性的图片设置点击事件
- 简单的爬取豆瓣纸书名与简介和图片