懒汉饿汉
单例
的目的是保证某个类仅有一个实例。当有某些类创建对象内存开销较大时可以考虑使用该模式。单例模式又分为 饿汉式 和 懒汉式 。
饿汉
该模式在类被加载时就会实例化一个对象
代码语言:javascript复制public class Person {
//饿汉式单例
private static Person person = new Person();
private Person(){}
public static Person getInstance(){
return person;
}
}
特点
该模式能简单快速的创建一个单例对象,而且是线程安全的(只在类加载时才会初始化,以后都不会)。但它有一个缺点,就是不管你要不要都会直接创建一个对象,会消耗一定的性能(当然很小很小,几乎可以忽略不计,所以这种模式在很多场合十分常用而且十分简单)
懒汉
该模式只在你需要对象时才会生成单例对象
代码语言:javascript复制public class User {
//懒汉式单例,只有在调用getInstance时才会实例化一个单例对象
public static User user;
private User(){
}
public static User getInstance(){
if(user==null){ //step 1.
user = new User(); //step 2
}
return user;
}
}
特点
线程不安全