Skip to main content

Чим лінивий Singleton відрізняється від жадібного?

Різниця між лінивим (lazy) і жадібним (eager) Singleton - у моменті створення екземпляра:

Жадібний (Eager Initialization)

Екземпляр створюється одразу під час завантаження класу, ще до першого звернення.

java
public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }

Плюси: простота, потокобезпечність. Мінуси: об'єкт створюється навіть якщо ніколи не використовується (зайві ресурси).

Лінивий (Lazy Initialization)

Екземпляр створюється лише при першому виклику getInstance().

java
public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) instance = new Singleton(); return instance; } }

Плюси: ресурси витрачаються лише за потреби. Мінуси: вимагає додаткової синхронізації для потокобезпеки.

Підсумок: Жадібний Singleton - швидший, але може витрачати ресурси даремно. Лінивий - економніший, але складніше реалізувати безпечно в багатопотоковості.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.