-
什么是单例模式
因进程需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。 -
单例模式的特点
1、单例模式只能有一个实例。
2、单例类必须创建自己的唯一实例
3、单例类必须向其他对象提供这一实例。 -
单例模式的实现
- 懒汉式(线程不安全)
public class SingletonDemo { private static SingletonDemo instance; private SingletonDemo(){ } public static SingletonDemo getInstance(){ if(instance==null){ instance=new SingletonDemo(); } return instance; } }
- 懒汉式,线程安全
public class SingletonDemo { private static SingletonDemo instance; private SingletonDemo(){ } public static synchronized SingletonDemo getInstance(){ if(instance==null){ instance=new SingletonDemo(); } return instance; } }
这种模式在多线程的时候效率比较低,生产上不推荐.
- 饿汉式,线程安全
public class SingletonDemo { private static SingletonDemo instance=new SingletonDemo(); private SingletonDemo(){ } public static SingletonDemo getInstance(){ return instance; } }
- 静态内部类(线程安全)
public class SingletonDemo { private static class SingletonHolder{ private static SingletonDemo instance=new SingletonDemo(); } private SingletonDemo(){ System.out.println("Singleton has loaded"); } public static SingletonDemo getInstance(){ return SingletonHolder.instance; } }
- 枚举方法(线程安全)
enum SingletonDemo{ INSTANCE; public void otherMethods(){ System.out.println("Something"); } }
- 双重校验(线程安全)
public class SingletonDemo { private static SingletonDemo instance; private SingletonDemo(){ System.out.println("Singleton has loaded"); } public static SingletonDemo getInstance(){ if(instance==null){ synchronized (SingletonDemo.class){ if(instance==null){ instance=new SingletonDemo(); } } } return instance; } }
java单例模式几种常见实现方式
最新推荐文章于 2024-06-10 20:00:29 发布