Назад к вопросам
СБЕР
Junior — Middle
59
Как различаются паттерны Singleton и Prototype в контексте объектно-ориентированного программирования?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Паттерн Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему. Это полезно, когда нужно контролировать доступ к какому-то ресурсу, например, к конфигурации или логгеру.
Пример Singleton на Java:
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Паттерн Prototype используется для создания новых объектов путем клонирования существующего экземпляра. Это удобно, когда создание объекта "с нуля" дорогостоящее или сложное, а копирование уже настроенного объекта проще.
Пример Prototype на Java:
public class Prototype implements Cloneable {
private int field;
public Prototype(int field) {
this.field = field;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Основное различие:
- Singleton ограничивает количество экземпляров одним.
- Prototype позволяет создавать новые объекты путем копирования существующих.