Sobes.tech
Назад к вопросам
Middle
5

Какие паттерны проектирования знаете? Расскажите про Proxy, Factory, Strategy.

Компании, где спрашивали
Небольшая компания

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

sobes.tech AI

Вот краткое описание трёх паттернов проектирования:

  • Proxy (Заместитель) — объект, который контролирует доступ к другому объекту, добавляя дополнительную логику (например, ленивую инициализацию, кэширование, контроль доступа).

    Пример: прокси для ленивой загрузки ресурса.

  • Factory (Фабрика) — паттерн для создания объектов без указания конкретного класса создаваемого объекта. Позволяет создавать объекты через общий интерфейс.

    Пример: фабрика, создающая разные виды документов по типу.

  • Strategy (Стратегия) — паттерн, позволяющий выбирать алгоритм поведения во время выполнения, инкапсулируя разные алгоритмы в отдельные классы.

    Пример: разные алгоритмы сортировки, выбираемые в зависимости от данных.

Пример Proxy на Java:

interface Image {
    void display();
}

class RealImage implements Image {
    private String filename;
    RealImage(String filename) { this.filename = filename; loadFromDisk(); }
    void loadFromDisk() { System.out.println("Loading " + filename); }
    public void display() { System.out.println("Displaying " + filename); }
}

class ProxyImage implements Image {
    private RealImage realImage;
    private String filename;
    ProxyImage(String filename) { this.filename = filename; }
    public void display() {
        if (realImage == null) {
            realImage = new RealImage(filename);
        }
        realImage.display();
    }
}

Такой прокси откладывает загрузку изображения до момента вызова display().