• 【设计模式】14.单例模式


    单例模式

      单例模式(Singleton),保证在运行时,某个类在内存中只有一个对象,并提供一个访问它的全局访问点。

    结构图:

     例:

    // 1.饿汉式,类一加载就实例化对象
    public class Singleton {
        private static Singleton instance = new Singleton();
    
        private Singleton() {     // 构造器私有化
        }
    
        public static Singleton getInstance(){  // 本类实例的唯一全局访问点
            return instance;
        }
    }
    // 2.懒汉式,第一次被引用时(getInstance),才将自己实例化
    public class Singleton{
    
        private volatile static Singleton instance = null;  // 创建当前对象的引用
    
        private Singleton(){      // 构造器私有化
        }
    
        public synchronized static Singleton getInstance(){
            if(instance == null){
                instance = new Singleton();
            }
            return instance;
        }
    
    }
    public class Test {
        public static void main(String[] args) {
            Singleton instance1 = Singleton.getInstance();
            Singleton instance2 = Singleton.getInstance();
            System.out.println(instance1 == instance2);   // true
        }
    }

    饿汉式:

      仅在类加载时就初始化完成,getInstance的时候,实例已经存在,线程安全,效率相对较高。

    懒汉式:

      在需要的时候才实例化(getInstance),线程不安全,须加锁(volatile/synchronized)才能使线程安全,所以效率相对低。

  • 相关阅读:
    JavaScript中的分支结构
    JavaScript中的函数
    JavaScript的数据类型转换
    javascript 概述及基础知识点(变量,常量,运算符,数据类型)
    关于检索关键字的常用四种方法
    Array.prototype.sort()
    String()与toString()区别和应用
    关于css的优先级
    android--asp.net webservice 返回json
    android--handler
  • 原文地址:https://www.cnblogs.com/jiazhongxin/p/12857832.html
Copyright © 2020-2023  润新知