Sobes.tech
Junior
126
questionbank

В чем отличие между паттернами singleton и prototype?

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

sobes.tech AI

  • 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 String property;
    
        public Prototype(String property) {
            this.property = property;
        }
    
        public void setProperty(String property) {
            this.property = property;
        }
    
        public String getProperty() {
            return property;
        }
    
        @Override
        public Object clone() throws CloneNotSupportedException {
            return super.clone(); // Поверхностное копирование по умолчанию
        }
        // ... другие методы
    }
    

Основные отличия:

Характеристика Singleton Prototype
Назначение Единый экземпляр класса Создание копий существующих объектов
Количество объектов Всегда один экземпляр Произвольное количество копий
Способ получения Через статический метод getInstance() Через метод clone() (копирование прототипа)
Копирование Не применимо Используется (поверхностное или глубокое)