什么是单例模式???
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式是一种常用的软件设计模式之一,其目的是保证整个应用中只存在类的唯一一个实例。
几种常见的单例模式代码实现:
饿汉式:
/**
* 单例模式
* 饿汉式
*/
public class Simple01 {
//类初始化时,立即创建对象
private static Simple01 s=new Simple01();
private Simple01(){
}
//方法没有同步,调用效率高
public static Simple01 getInstance(){
return s;
}
}
懒汉式
/**
* 单例模式
* 懒汉式
*/
public class Simple02 {
//调用时再创建
private static Simple02 s;
private Simple02(){}
//线程同步
public static synchronized Simple02 getInstance(){
if(s==null){
s=new Simple02();
}
return s;
}
}
静态内部类式(线程同步,懒汉式加载)
/**
* 单例模式
* 静态内部类式
*/
public class Singleton03 {
private Singleton03(){}
private static class Singletoninner{
private static final Singleton03 instance=new Singleton03();
}
public static Singleton03 getInstance(){
return Singletoninner.instance;
}
}
枚举式(没有延时加载,防止反射和反序列化)
/**
* 单例模式
* 枚举式
*/
public enum Singleton04 {
INSTANCE;//本身就是一个单例对象
public void operation(){
}
}
单例对象 占用资源少 不需要延时加载
枚举式 好于 饿汉式
单例对象 占用资源大 需要延时加载
静态内部类式 好于 懒汉式