单例模式
来源:互联网 发布:草图大师网络 编辑:程序博客网 时间:2024/06/05 18:29
单例模式 的应用场景是: 有的时候只需要在内存中保有该类的一份实例,如资源配置类。
单例模式要求:
1. 单例类 只有一个 实例
2.构造方法是私有的,这样的话,外部无法new出一个实例
3.单例类必须提供一个别人得到实例的静态方法
4.必须解决多线程下的同步问题
5.分为懒汉式和饿汉式实现方式
一:下面先看看懒汉式的实现方法,何为懒汉,就是自己不先主动生成一个实例,而是等到用户使用的时候来判断,判断如果实例还为空,那么就new一个。
public class Singleton(){
public static Singleton s = null;
private Singleton(){//构造方法必须为私有,这样外部无法new出实例
}
//提供一个外部获取实例的静态方法,必须为静态的,因为外部new 不出对象,只能通过类来直接调用静态方法。
public static synchronized Singleton getInstance(){
if(s == null){
s = new Singleton();
}
return s;
}
}
//synchronize 必须添加。因为懒汉式就是存在多线程的同步问题,我们来看一种情况
比如 某线程调用 getInstance方法的时候,还没来得及判断你,另外一个线程就进来了,此时2个线程都认为实例为Null,于是各自去new各自的实例,最终就不是单例了
二:饿汉式就比较直接了。何为饿汉,就是很饿,一进来就找实例,自己直接动手new了。不用等到实际需要的时候才去new
public class Singleton(){
private static final Singleton s = new Singleton();
private Singleton();
public static Singleton getInstance(){
return s;
}
}
}
饿汉和懒汉的最大区别就是 一个线程安全,一个线程不安全。
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- android反编译apk文件
- 四个主要的ClassLoader
- 将每一个Tab符换成四个空格
- HTML5 And JS绘制流星雨
- linux下C++开发资料
- 单例模式
- 收录各种猥琐的Java笔试/面试题目
- iphone notification及使用
- 罗云彬win32汇编教程笔记 子函数的声明, 定义与调用
- 谁能坐上云计算的第二把交椅?
- 服务器出现FastCGI Error,Number: 258 (0x80070102)操作过时的详细解决方法
- redmine和gitolite整合
- poj 2516 Minimum Cost KM算法 最小权值匹配
- 如何才能走向成功?