Sobes.tech
Back to questions
Junior — Middle
60

Как различаются паттерны Singleton и Prototype в контексте объектно-ориентированного программирования?

Companies where asked
СБЕРСБЕР

Answer from AI

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 позволяет создавать новые объекты путем копирования существующих.