Чим лінивий 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
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.