Sobes.tech
Back to questions
Junior — Middle
85

Можешь привести пример того, как реализовать принцип открытости/закрытости в практике разработки?

Answer from AI

sobes.tech AI

Принцип открытости/закрытости (Open/Closed Principle) гласит, что программные сущности должны быть открыты для расширения, но закрыты для модификации. В практике Node.js это можно реализовать через использование абстракций и наследования или композиции.

Например, если у вас есть класс для обработки платежей, и вы хотите добавить новый способ оплаты, не меняя существующий код, можно сделать базовый класс или интерфейс, а новые способы оплаты реализовать в отдельных классах:

class PaymentProcessor {
  process(payment) {
    throw new Error('Метод process должен быть реализован');
  }
}

class CreditCardPayment extends PaymentProcessor {
  process(payment) {
    console.log('Обработка платежа кредитной картой:', payment);
  }
}

class PayPalPayment extends PaymentProcessor {
  process(payment) {
    console.log('Обработка платежа через PayPal:', payment);
  }
}

function handlePayment(processor, payment) {
  processor.process(payment);
}

const payment = { amount: 100 };
handlePayment(new CreditCardPayment(), payment);
handlePayment(new PayPalPayment(), payment);

Таким образом, чтобы добавить новый способ оплаты, достаточно создать новый класс, реализующий метод process, не меняя существующий код.