单例模式属于创建型模式,解决某个类频繁的创建与销毁。该模式保证了其对象在JVM中只有一个实例对象存在。必须保证私有化构造函数,只能有一个实例对象存在。通过减少new关键字的使用,降低系统内存的使用频率,同时减轻GC工作;避免了资源的多重使用。
1、懒汉式:
public static class Demo1{
private static Object obj = new Object();
private Demo1(){}
public static Object getInstance(){
return obj;
}
}
2、饿汉式:
public static class Demo2{
private static Object obj = null;
private Demo2(){}
public static Object getInstance(){
if (obj == null) {
obj = new Object();
}
return obj;
}
}
3、双重检测保证多线程安全:
public static class Demo3{
private static Object obj = null;
private Demo3(){}
public static Object getInstance(){
if (obj == null) {
synchronized (Demo3.class) {
if (obj == null) {
obj = new Object();
}
}
}
return obj;
}
}
4、静态内部类+静态方法:
private static class Demo4{
private static Object obj = new Object();
}
public static Object getInstance(){
return Demo4.obj;
}