单例模式的定义:
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例
单例的使用场景:
1.要求生成唯一序列号的环境
2.创建一个对象需要消耗的资源过多
3.需要定义大量的静态常量和静态方法
单例模式分为懒汉式和饿汉式两种:
饿汉式单例:
/**
* @Author: chuan.bai
* @Description 饿汉式单例模式
* @Date: Created on 08:59 2018/3/14
* @Modified By:
*/
public class Singleton {
public static final Singleton singleton = new Singleton();
/**
* 构造方法
*/
private Singleton() {
}
public static Singleton getSingleton() {
return singleton;
}
public void singletonMethon() {
System.out.println("生成一个单例方法");
}
public static void main(String[] args) {
Singleton singleton = Singleton.getSingleton();
//创建对象a
Singleton singletonA = Singleton.getSingleton();
//创建对象b
Singleton singletonB = Singleton.getSingleton();
//比较对象地址值
System.out.println(singletonA.equals(singletonB));
singleton.singletonMethon();
}
}
懒汉式单例
/**
* @Author: chuan.bai
* @Description 懒汉式单例
* @Date: Created on 10:45 2018/3/14
* @Modified By:
*/
public class SingletonB {
private static SingletonB singletonB = null;
private SingletonB(){
}
public synchronized static SingletonB getSingletonB(){
if(singletonB==null){
singletonB =new SingletonB();
}
return singletonB;
}
}