- 饿汉式单例模式:与 C# 中的实现方式相似,在程序启动时就创建单例对象,并在整个程序运行期间使用该对象。该方式比较简单,但是可能会影响程序的性能,因为即使不需要使用该对象,它也会一直存在于内存中。
以下是一个使用饿汉式单例模式的示例代码:
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }
- 懒汉式单例模式:与 C# 中的实现方式相似,在需要使用单例对象时才创建单例对象。需要注意的是,在多线程的环境中需要考虑线程安全问题。
以下是一个使用懒汉式单例模式的示例代码:
public class Singleton { private static Singleton instance = null; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
该实现方式在单线程的环境中是可行的,但是在多线程的环境中会有并发安全问题,因为多个线程可能同时调用 getInstance 方法,导致创建多个实例。可以通过加锁的方式解决该问题,但是会影响程序的性能。为了避免这种情况,可以使用双重检查锁定或者静态内部类的方式实现懒汉式单例模式。