zoukankan      html  css  js  c++  java
  • Java设计模式之单例模式

    Java设计模式之单例模式

    最近由于想了解下底层的源码,所以看了些设计模式,后续看了几种写几种

    单例模式英文原文:

    • Ensure a class has only one instance,and provide a global point of access to it
    • 即:在整个应用程序中,确保一个类只有一个实例,并向整个系统中提供这个实例

    在Java中通常有两个表现形式

    • 饿汉式单例:类在加载时就被实例化
    • 懒汉式单例:第一次加载时才被加载实例化

    1、饿汉式单例

    Singleton
    static Singleton m_instance = new Singleton ()
    static getInstance() : Singleton

    源代码:

    public class Singleton{
         private Singleton() {}  
        private static final Singleton1 single = new Singleton();  
        //静态工厂方法   
        public static Singleton getInstance() {  
            return single;  
        }  
    }
    //成员变量是私有的,而且不能被外部访问
    

    2、懒汉式单例

    Singleton
    static Singleton m_instance = null
    syncchronized static getInstance() : Singleton

    源代码:

    public class Singleton {  
      private Singleton() {}  
       private static Singleton single=null;     
       public static Singleton getInstance() {  
           if (singleton == null) {    
               synchronized (Singleton.class) {    
                  if (singleton == null) {    
                     singleton = new Singleton();   
                  }    
               }    
           }    
           return singleton;   
       } 
    } 
    //双重校验锁
    
    • 第一种虽然是比较耗费资源,但是反映速度是比较好的
    • 第二种虽然比较爽,但是比较消耗运行时的性能,但是影响很小
    • 最终说来各有千秋,第一种比较适合用户资源配置,第二种比较适合于业务逻辑上的单例模式

    借助于:电子工业出版社《设计原则》感谢!

  • 相关阅读:
    继承与派生
    函数,迭代器,生成器
    面向对象
    函数
    模块与包
    python面试题(转自https://www.cnblogs.com/wupeiqi/p/9078770.html)
    python学习大纲目录(转自alex博客https://www.cnblogs.com/alex3714/)
    Mysql(基础篇)
    初识HTML和CSS2
    初识前端作业1
  • 原文地址:https://www.cnblogs.com/ontoweb-zp/p/7906274.html
Copyright © 2011-2022 走看看