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() (копирование прототипа) |
| Копирование | Не применимо | Используется (поверхностное или глубокое) |