Sobes.tech
Junior — Middle
61

Можешь назвать и объяснить другие распространённые паттерны проектирования, отличные от Singleton и Factory?

Answer from AI

sobes.tech AI

Кроме Singleton и Factory, есть множество распространённых паттернов проектирования:

  • Observer (Наблюдатель): позволяет объектам подписываться на события другого объекта и получать уведомления при изменениях. Часто используется для реализации событийных систем.

  • Decorator (Декоратор): динамически добавляет объектам новые обязанности, оборачивая их в другие объекты с дополнительным поведением.

  • Strategy (Стратегия): определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Позволяет менять алгоритм независимо от клиентов.

  • Adapter (Адаптер): позволяет объектам с несовместимыми интерфейсами работать вместе, преобразуя интерфейс одного объекта в интерфейс, ожидаемый клиентом.

  • Builder (Строитель): отделяет конструирование сложного объекта от его представления, позволяя создавать разные представления объекта.

Пример паттерна Strategy на Java:

interface PaymentStrategy {
    void pay(int amount);
}

class CreditCardPayment implements PaymentStrategy {
    public void pay(int amount) {
        System.out.println("Оплата " + amount + " с помощью кредитной карты");
    }
}

class PayPalPayment implements PaymentStrategy {
    public void pay(int amount) {
        System.out.println("Оплата " + amount + " через PayPal");
    }
}

class ShoppingCart {
    private PaymentStrategy paymentStrategy;

    public void setPaymentStrategy(PaymentStrategy strategy) {
        this.paymentStrategy = strategy;
    }

    public void checkout(int amount) {
        paymentStrategy.pay(amount);
    }
}

Этот паттерн позволяет менять способ оплаты без изменения кода корзины.