概念:
java中单例模式是一种常见的设计模式,单例模式的写法有很多种,比较常见的有三种:懒汉式、饿汉式、内部类、双重验证。
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保该类只被是实例化一次,并且只能自己实例化自己。
若想某一类不在类外被实例化,只需用private修饰符修饰其构造函数。
1.饿汉式:
public class Single {
private Single single=new Single();
private Single() {}
public Single getInstance() {
return this.single;
}
}
优点线程安全,缺点占用内存
2.懒汉式
//懒汉式
public class Single01 {
private static Single01 single;
private Single01() {}
public static synchronized Single01 getINstance() {
if(single==null) {
single=new Single01();
}
return single;
}
}
虽然线程安全但是,效率特别低,当多线程访问时需要排队等待
3.内部类式
public class Single02 {
private Single02() {}
public Single02 getInstance() {
return Inner.getInstance();
}
private static class Inner{
private static Single02 single=new Single02();
public static Single02 getInstance() {
return single;
}
}
}
4.双重验证
public class Single03 {
private static Single03 single;
public Single03 getInstance() {
if(single==null) {
synchronized (Single03.class) {
if(single==null) {
single=new Single03();
}
}
}
return single;
}
}