Можешь назвать и объяснить другие распространённые паттерны проектирования, отличные от Singleton и Factory?
Ответ от нейросети
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);
}
}
Этот паттерн позволяет менять способ оплаты без изменения кода корзины.