单例设计模式
来源:互联网 发布:ubuntu iptables启用 编辑:程序博客网 时间:2024/05/01 08:18
设计模式(感觉超级烦人)博大精深,这次说说最简单的单例设计模式。
//饿汉式public class Single_Hungry {private static Single_Hungry s = new Single_Hungry();private Single_Hungry() {//构造方法必须私有 以避免多个实例被创建}public static Single_Hungry getInstance() {return s;}}
//懒汉式class Single_Lazy {private static Single_Lazy s = null;private Single_Lazy() {//构造方法必须私有 以避免多个实例被创建}public static Single_Lazy getInstance() {if(s == null) {s = new Single_Lazy(); //延迟加载}return s;}}
饿汉式,简单粗暴,但有一个问题就是不管用不用得到这个对象都先创建出来再说(静态方法)。这样在有些情况下往往会造成一些无用对象而浪费内存并且给JVM造成不必要的压力。
懒汉式,有一个优点就是延迟加载,用到这个对象时才会创建对象,并且会先判断一下当前有没有这个对象,再决定是否创建。这样就避免了饿汉式带来的问题。但懒汉式自己也存在一个问题那就是线程安全问题。在多线程的情况下,他的延迟加载功能可能失效。
所以便要进行线程安全处理
public class Single_Lazy {private static Single_Lazy s = null;private Single_Lazy() {}public static Single_Lazy getInstance() {if(s == null) {//减少锁的判断次数 只要有一个初始化完成 便不再进入synchronized(Single_Lazy.class) {if(s == null) {s = new Single_Lazy(); //延迟加载}}}return s;}}进行双重判断,是为了减少对锁的判断,减少开销,提高效率。(一旦有一个对象被创建,之后就不会判断锁了)
1 0
- 设计模式--单例
- 单例设计模式
- 设计模式----单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 设计模式-单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- HDU ACM 题目分类
- iOS知识---某些报错信息(_BSMachError: (os/kern) invalid capability (20))
- 分数(有理数)的四则运算PAT1088
- Android总结 - 网络请求总结
- iOS单元测试GHUnit + OCMock(不使用cocoapods版)
- 单例设计模式
- linux关于bashrc与profile的区别(转)
- dfs总结
- BZOJ-1621-[Usaco2008 Open]Roads Around The Farm分岔路口
- 查缺补漏
- break,continue,return in function
- 【个人记录】使APP在user版本隐藏图标,在eng版本显示图标
- 【剑指offer-Java版】30最小的K个数
- iOS中UIWebView中添加长按和双击事件