单例模式
单例模式(SingleTon Pattern)是Java中最简单设计模式之一;
指的是一个类仅有一个全局实例,属于设计模式的创建型模式;
目的是在减少内存开销,避免资源的重复占用;
主要应用有数据库连接、日志类、读取配置文件等等;
主要实现方式有:饿汉式、懒汉式、静态内部类、枚举、双重校验锁(不建议使用);
主要实现方式
1、饿汉式
/**
*
* 特点:线程安全、调用效率高、不能延时加载;
*
*/
public class SingleTon1 {
/**
* 1、将类私有;private
*/
private SingleTon1(){
}
/**
* 2、初始化类时即加载;private static
*/
private static SingleTon1 instance = new SingleTon1();
/**
* 返回实例;public static
* @return
*/
public static SingleTon1 getInstance(){
return instance;
}
}
2、懒汉式
/**
*
* 特点:线程安全、调用效率相对不高、能延时加载;
*
*/
public class SingleTon2 {
/**
* 1、将类私有;private
*/
private SingleTon2(){
}
/**
* 2、声明私有静态实例;private static
*/
private static SingleTon2 instance;
/**
* 返回一个类的实例; private static
* @return
*/
public static synchronized SingleTon2 getInstance(){
if(instance == null){
instance = new SingleTon2();
}
return instance;
}
}
3、静态内部类
/**
*
* 静态内部类实现单例模式 好过 懒汉式
*
*/
public class SingleTon3 {
private static class SingleTon3Inner{
private static final SingleTon3 instance = new SingleTon3();
}
private SingleTon3(){
}
public static SingleTon3 getInstance(){
return SingleTon3Inner.instance;
}
}
4、枚举
/**
* 枚举 好过 饿汉式
*
*/
public enum SingleTon4 {
INSTANCE;
}
注意:在使用时(除枚举),以上的代码能够通过反射机制和反序列化得到不同的实例,但一般在写项目的过程中可不必在意。