一、单例模式定义
确保某个类只有一个实例,并自行实例化向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。
二、单例模式的实现
①、饿汉模式(立即加载模式)
本身是线程安全的
public class Hungry {
private static Hungry hungry = new Hungry();
private Hungry(){
}
public static Hungry getHungry(){
return hungry;
}
}
②、懒汉模式(延迟加载模式)
可进行优化,将synchronized关键字放到if语句前,进一步优化可以使用两个synchronized关键字。
public class Lazy {
private static Lazy lazy;
private Lazy(){
}
public synchronized static Lazy getLazy(){
if(lazy == null)
lazy = new Lazy();
return lazy;
}
}
三、为什么在单例模式中使用static
在单例模式中,构造函数都是私有的,也就是说在外部对象中无法通过new的形式调用实例的函数,那么只能通过调用静态函数的形式得到实例,再调用其中函数 ,静态函数只能访问静态变量,因此在单例模式中使用static
四、