Sobes.tech
Back to questions
Junior — Middle
62

Объясните отличия между паттернами Singleton и Prototype в контексте области видимости и использования объектов.

Answer from AI

sobes.tech AI

Паттерн Singleton гарантирует, что в приложении существует только один экземпляр класса, который доступен глобально. Область видимости объекта — глобальная, и все клиенты работают с одним и тем же объектом. Это удобно для управления общими ресурсами, например, конфигурацией или пулом соединений.

Паттерн Prototype предполагает создание новых объектов путем клонирования существующего прототипа. Каждый вызов создает новый независимый экземпляр. Область видимости — локальная для каждого созданного объекта, что позволяет иметь множество похожих, но независимых объектов.

Пример на Java:

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

// Prototype
public class Prototype implements Cloneable {
    private int value;
    public Prototype(int value) { this.value = value; }
    public Prototype clone() throws CloneNotSupportedException {
        return (Prototype) super.clone();
    }
}

Таким образом, Singleton — один объект на всё приложение, Prototype — множество объектов, создаваемых по образцу.