Встречается на собеседованиях • сегодня

Чем singleton отличается от prototype

Singleton и Prototype относятся к категории порождающих шаблонов проектирования. Они решают разные проблемы и имеют разные применения в разработке программного обеспечения.

Singleton предназначен для обеспечения того, чтобы класс имел только один экземпляр во всем приложении и предоставлял глобальную точку доступа к этому экземпляру. Это достигается за счет того, что конструктор класса делается приватным, а создание экземпляра класса осуществляется через статический метод, который проверяет, существует ли уже экземпляр этого класса, и если нет, то создает его. Часто используется для управления ресурсами, такими как соединение с базой данных, где необходимо использовать только одно соединение на всё приложение.

java
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

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

Prototype, напротив, используется для создания новых объектов, копированием существующего объекта-прототипа. Это полезно, когда создание экземпляра класса является ресурсоемким процессом или когда требуется создать копию объекта, сохраняя его состояние. Это часто достигается с помощью реализации интерфейса `Cloneable` и переопределения метода `clone()`.

java
public class Prototype implements Cloneable {
    private String field;

    public Prototype(String field) {
        this.field = field;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

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

  • Цель использования: Singleton гарантирует, что класс имеет только один экземпляр, в то время как Prototype предназначен для создания новых объектов путем копирования существующего объекта.
  • Метод создания объекта: В Singleton объект создается через статический метод, контролирующий его экземпляр, в Prototype новый объект создается копированием (клонированием) существующего.
  • Применение: Singleton часто используется для управления доступом к ресурсам, которые должны быть единственными в приложении, например, соединение с базой данных. Prototype используется, когда нужно избежать затрат на создание объекта с нуля, вместо этого копируя существующий объект.

Основное отличие между Singleton и Prototype заключается в их цели и способе создания объектов: Singleton обеспечивает единственность экземпляра класса, в то время как Prototype фокусируется на создании новых объектов путем копирования.

Feb. 27, 2024, easyoffer

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы