一、概念:
Java中单例模式是一种常见的设计模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿汉式单例。
二、单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
三、懒汉式和饿汉式的区别
懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉么,很懒的,配置文件的实例直到用到的时候才会加载。
饿汉式的特点是一开始就加载了,如果说懒汉式是“时间换空间”,那么饿汉式就是“空间换时间”,因为一开始就创建了实例,所以每次用到的之后直接返回就好了。
四、代码实现
// 懒汉模式
public class SingletonClass {
private SingletonClass(){
}
private static SingletonClass instance=null;
public static synchronized SingletonClass getInstance(){
//synchronized 同步方法 保证该方法在某一个时间片只能被一个线程调用
if(instance==null){
instance=new SingletonClass();
}
return instance;
}
}
// 饿汉模式
public class Singleton {
private static final Singleton instance=new Singleton();
private Singleton(){
}
// 这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return instance;
}
}