一个类只有一个实例化对象;(线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例
/**
*
*饿汉式 天生就是线程安全的
* 优点:没有加锁,所以效率很高
* 缺点: 类加载,就初始化,浪费内存
*/
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton(){};
public static Singleton getInstance(){
return instance;
}
}
**
* 懒汉式 线程不安全
* 有延迟加载
* 只有调用getLeton()方法才会初始化对象
*/
public class SingletonLH {
private static SingletonLH leton =null;
private void SingletonLH(){};
//public static synchronized SingletonLH getLeton(){//加锁 效率会慢
public static SingletonLH getLeton(){
if(null == leton){
leton= new SingletonLH();
}
return leton;
}
}
)
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。