Sobes.tech
Назад к вопросам
Middle — Middle+
65

Каким образом можно реализовать паттерн Prototype вместе с паттерном Singleton?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Паттерн Singleton гарантирует, что у класса есть только один экземпляр, а Prototype позволяет создавать копии объектов. Чтобы совместить их, можно сделать Singleton-класс, который хранит один прототип объекта и предоставляет метод для клонирования этого прототипа при необходимости.

Пример на Java:

public class PrototypeSingleton implements Cloneable {
    private static final PrototypeSingleton instance = new PrototypeSingleton();

    private PrototypeSingleton() {
        // приватный конструктор
    }

    public static PrototypeSingleton getInstance() {
        return instance;
    }

    @Override
    protected PrototypeSingleton clone() {
        try {
            return (PrototypeSingleton) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }

    // Метод для получения клона прототипа
    public PrototypeSingleton getClone() {
        return this.clone();
    }
}

Таким образом, у вас есть единственный прототип (Singleton), и вы можете создавать его копии через метод getClone(). Это полезно, когда нужно контролировать создание объектов, но при этом иметь возможность быстро создавать их копии.