设计模式三:单例模式


1、概述

某个类的实例在 多线程环境下只会被创建一次出来。

单例模式有饿汉式单例模式、懒汉式单例模式;懒汉式如果多人同时调用,容易创建多个对象,有线程安全所以使用synchronized

2、应用场景

spring的 ioc思想中将对象创建并放入map容器中,用的就是单例模式。用的时候从map容器中取出使用即可。

3、示例

3.1、饿汉模式

public class Singleton{
  private static Singleton instance = new Singleton();
	
  private Singleton(){}
  
  public static Singleton getInstance(){
    return instance;
  }
}

3.2、懒汉模式

public class Singleton{
    private static Singleton instance;

    private Singleton(){}

    //这里需要加 线程同步。如果多个人同时调用,很容易创建多个对象
    public static synchronized Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}