设为首页 加入收藏

TOP

设计模式之单例模式(二)
2017-10-10 12:34:33 】 浏览:7927
Tags:设计模式 单例 模式
用到的时候再创建)
           public static   SingletonDemo03 getInstance(){   //提供一个对外开放的方法用来获取对象
                  //方法同步,调用效率低
                 if ( instance== null ){  //Single Checked
                      synchronized (SingletonDemo03. class ) {
                       if ( instance== null ){     //Double Checked
                                                instance = new SingletonDemo03();
                            }
                      }
                 }
              return instance;
           }
     }
 
  • 双重检测锁式总结:将同步内容放在了if内部,提高了执行的效率,不必每次调用对象时都进行同步,只有第一次才同步,创建了以后就没有必要了。
 
  • 静态内部类实现:

 
public class SingletonDemo04 {  
            private static class singletonSlassInstance{  //静态内部类
                  private static final SingletonDemo04  instance = new SingletonDemo04();
       }
            public static SingletonDemo04 getInstance(){
                  return singletonSlassInstance.instance //通过静态内部类名来调用内部类中的成员
           }
            private SingletonDemo04(){} //构造器私有
     }
    • 静态内部类方式总结:外部类无static属性,不会像饿汉式那样立即加载对象,只有真正调用getInstance(),才会加载静态内部类,加载类时是线程安全的。instance是static  final类型,保证了内存中只有这样一个实例存在,而且只被赋值一次,从而保证了线程安全性。兼并了高并发调用和延时加载的优势。而且调用效率高,并实现了延时加载。
  • 枚举方式:

public enum SingletonDemo05 {
       INSTANCE //此元素本身就是单例对象
            //添加自己需要的操作
            public void singletonOperation(){     
           }
     }
  • 枚举方式总结:
    • 优点:实现简单,枚举本身就是单例模
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇天南地北双飞客,老翅几回寒暑 下一篇java 企业网站源码 后台 springmv..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目