signed

QiShunwang

“诚信为本、客户至上”

设计模式之—单例设计模式

2021/3/21 0:27:52   来源:

单例设计模式

  • 确保某个类只有一个实例,而且自行实例化,并向整个系统提供该实例对象。计算机系统中:线程池、缓存、日志对象、对话框、打印机、显卡驱动等常被设计为单例。

特点:

  • 单例只有一个实例;
  • 该实例自己创建;
  • 对外提供唯一的实例。

懒汉式、饿汉式

1、饿汉式:

// 饿汉式单例,在类初始化时,已经自行实例化
package com.weidd.best.singletontest;

public class Singleton {
    private Singleton() {
    }
    private static final Singleton instance = new Singleton();
    // 静态工厂方法
    public static Singleton getInstance() {
        return instance;
    }
    public void doSomething(){
        System.out.println("doSomething~");
    }
    public static void main(String[] args) {
        Singleton instance = Singleton.getInstance();
        Singleton instance1 = Singleton.getInstance();
        instance.doSomething();
        instance1.doSomething();
    }
}
  • 饿汉式是天生的线程安全的,在类创建的同时就创建一个静态对象供系统使用,以后不在变。(这样会造成内存资源的一直被占用。)

懒汉式:

  • 相同点:
  • 不同点:

注意事项:

  • 私有化构造方法;
  • 提供唯一一个静态实例化对象;
  • 提供一个静态方法对外提供对象实例。
// 单例设计模式按照创建对象的时机分为:懒汉式和饿汉式
//饿汉式存在线程不安全的情况,

未完待续~