Java单例模式
单例模式:指一个类只能生成一个对象。
- 懒汉式和饿汉式
1)构造方法私有化
2)提供一个公开的静态方法来返回当前对象
3)提供一个私有的静态变量来储存当前对象 - 代码块
懒汉式
public class Slacker {
public static Slacker s;
private Slacker(){
}
public Slacker getSlacker(){
if(s==null){
s = new Slacker();
}
return this.s;
}
}
饿汉式
public class HungryMan {
public static HungryMan hm = new HungryMan();
private HungryMan(){
}
public static HungryMan getHungryMan(){
return hm;
}
}
- 懒汉式饿汉式比较
懒汉式懒汉式都将本身设置为自己的static属性,在引进方法区时会自动加载运行。
懒汉式并未直接创建对象而是对已有属性进行判断若无值则创建对象A这时堆内存才会为对象A分配空间。
饿汉式则是直接创建对象并赋值给属性,在加载进方法区时,堆内存就会分配给它空间。
懒汉式是在使用时才会占用空间,饿汉式则是加载时便会占用空间。