单例模式(Singleton Pattern)

单例模式

    • 1、掌握单例模式的应用场景。
      • 1-1、饿汉式单例
      • 1-2、懒汉式单例
      • 1-2-1、 测试类:
      • 1-2-2、 main
      • 1-2-3、 控制台结果
      • 1-2-4、 改进 加锁 `synchronized `
      • 1-2-5、 控制台输出
      • 1-2-6、 再改进,使用双检锁,懒汉式双重检查锁定(Lazy initialization with double-checked locking)
      • 1-2-7、 控制台输出
        • 1-2-7-1 问题一 代码是不是有点臃肿
        • 1-2-7-2 问题二为什么使用volitatle关键字
          • 1-2-7-2-1 解释一
          • 1-2-7-2-1 解释二

定义:
1:单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝只有一个实例,并提供一个全局访问点。
2:隐藏其所有的构造方法:
3:属于创建型模式

1、掌握单例模式的应用场景。

框架中常见的单例 ServletContext、ServletConfig、ApplicationContext…

单例模式的常见写法

1-1、饿汉式单例

package com.tansun.goods.pack;

/**
 * 优点:执行效率高,性能高,没有任何的锁
 * 缺点:某些情况下,可能会造成内存浪费
 * @author Administrator
 */
public class HungrySingleton {
   

    private static final HungrySingleton hungrySingleton = new HungrySingleton();

    private HungrySingleton() {
   
    }

    public static HungrySingleton getInstance() {
   
        return hungrySingleton;
    }
}

1-2、懒汉式单例

package com.tansun.goods.pack;
/**
 * @author Administrator
 * 优点:节省内存
 * 缺点:线程不安全
 */
public class LazySingleton {
   

    private static LazySingleton lazySingleton = null;
    private LazySingleton(){
   }

    public static LazySingleton getInstance(){
   
        if (lazySingleton == null){
   
            lazySingleton = new LazySingleton();
        }
        return lazySingleton;
    }
}

1-2-1、 测试类:

package com.tansun.goods

你可能感兴趣的:(单例模式,javascript,java)