欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《大话设计模式01》--单例模式

程序员文章站 2022-06-05 14:19:47
...

一,懒汉模式&&饿汉模式

public class Singleton {
	private Singleton() { } 
	
	//1.懒汉模式;
	private static Singleton singleton;
	public static Singleton getInstance(){
		if(null==singleton){
			singleton= new Singleton();
		}
		return singleton;
	}
}

class Singleton2{
	private Singleton2() { } 

	//2.饿汉模式;
	private static Singleton2 singleton2= new Singleton2();
	public static Singleton2 getInstance(){
		return singleton2;
	}
}

出于线程安全考虑,可以加锁处理

//3.懒汉模式(线程安全)
class Singleton3{
	private Singleton3(){}
	private static Singleton3 singleton;
	public static synchronized Singleton3 getInstance(){
		if(singleton == null){
			singleton = new Singleton3();
		}
		return singleton;
	}
}

##  简单梳理实现思路

1,private 私有的构造器,使其它的类不能通过new直接获取当前类的实例;

2,public 公有的方法getInstance()对外提供唯一的实例;

3, 饿汉模式和懒汉模式的唯一区别在于Singleton初始化的时机, 饿汉模式在调用getInstance()方法之前已经新建好了实例对象, 而懒汉模式则时机较晚, 在调用getInstance()方法之后;  懒汉模式就是比较懒, 等到用的时候再去实例化需要的对象;