Singleton - juedaiyuer/researchNote GitHub Wiki

#单例模式#

  • 一个类的class只有一个实例存在,通常用于资源管理器

方法

  • 我们需要一个静态的对象属性,并且私有化
  • 要有一个私有的构造函数
  • 要有一个静态的返回单例对象的方法,这个方法名最好统一成getInstance()

static关键字

  1. static标识的,在类加载的时候创建,属于整个类,通过类名调用,不属于类实例
  2. static属性被类的一个对象修改过,其它对象使用的是修改后的值

饥汉模式

public class Single
{
    private static Single my_single = new Single();
    
    public static Single getInstance()
    {
		return my_single;
    } 
    
    public void display()
    {
		System.out.println("singleton test ");
    }
}
  • 在编译时已经创建了一个实例

饱汉模式

public class Single
{
	private static Single my_single = null;

	private Single(){}
	
	public synchronized static Single getInstance()
	{
		if(my_single == null)
			my_single = new Single();
		return my_single;
	} 
	
	public void display()
	{
		System.out.println("singleton test ");
	}
}
  • 运行时才创建