设计模式-单例模式
来源:互联网 发布:交大知行大厦地址 编辑:程序博客网 时间:2024/06/08 08:47
描述
单例模式是我们最常见也是最简单的一种设计模式,当一个系统只需要一个类的一个实例,并且希望这个实例可以在很多地方访问,这时候,就需要单例模式了。
实现单例模式的要点有三个:
1.构造函数必须是private的
2.指向自己实例的私有static引用
3.以自己实例为返回值的static的公有的方法
实现
饿汉模式
public class Singleton { private static Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return singleton; } // 其他……}
从中可以看到,这种在类加载的时候就实例化的方式,优点是避免了多线程访问时候的安全问题,缺点是不论会不会使用到,都会实例化。
懒汉模式
public class Singleton { private static Singleton instance = null; private Singleton(){ }; public static Singleton getInstance() { if(instance == null) { synchronized(Singleton.class) { if(instance == null) { instance = new Singleton(); } } } return instance; } }
这个就是懒汉模式,这里面涉及到一个double-cheched-locking(双重检查锁定),可以参考:http://ifeve.com/doublecheckedlocking/,这个在jdk1.5之后才会是线程安全的。
懒汉模式二
一种完美实现的实现既线程安全又延迟加载的模式(Initialization on demand holder)使用静态内部类:
public class Singleton { private Singleton(){ }; private static class SingletonHold { private static final Singleton instance = new Singleton(); } Public static Singleton getInstance(){ return SingletonHold.instance; }}
这样就能保证在第一次调用getInstance()方法时,才会去初始化instance实例,而且该实例被定义为static,只会被初始化一次。
0 0
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 设计模式-单例模式
- [设计模式] 单例模式
- 设计模式--单例模式
- 设计模式---单例模式
- 设计模式--单例模式
- 设计模式 -----单例模式
- 设计模式:单例模式
- C#新手入门代码 泛型类的静态字段的实例
- caffe学习笔记(一)
- n皇后问题-java版
- 轻院OJ-1912 小火山的爱情密码(尺取法)
- [codevs3269] 混合背包
- 设计模式-单例模式
- zzuliOJ 1905:小火山的跳子游戏(GCD+思维)
- HDU 3172 Virtual Friends 并查集+map
- java数组使用equals()方法报空指针问题
- 训练第五周之最小生成树
- mac下编译protobuf 3.0
- 图片预加载
- POJ 1611 The Suspects 并查集
- 基于centos6.5快速搭建jdk,tomcat,nginx,显示个人静态页面(基于yum)