Паттерны Singleton и Prototype относятся к способам создания объектов (бинов) в Java, но имеют разные цели и поведение:
Чем отличается scope prototype от singleton в Spring?
Паттерны Singleton и Prototype относятся к способам создания объектов (бинов) в Java, но имеют разные цели и поведение:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Паттерны Singleton и Prototype относятся к способам создания объектов (бинов) в Java, но имеют разные цели и поведение:
- Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему. Это удобно для объектов, которые должны быть уникальными, например, конфигурация или менеджер соединений.
- Prototype создаёт новый экземпляр объекта при каждом запросе. Используется, когда нужно иметь множество похожих, но независимых объектов.
Пример в контексте Spring:
// Singleton (по умолчанию)
@Component
public class MySingletonBean {
// один экземпляр на весь контекст
}
// Prototype
@Component
@Scope("prototype")
public class MyPrototypeBean {
// новый экземпляр при каждом запросе
}
Таким образом, Singleton экономит ресурсы и обеспечивает единообразие, а Prototype даёт гибкость и независимость экземпляров.