Назад к вопросам
Junior — Middle
86
Можешь привести пример того, как реализовать принцип открытости/закрытости в практике разработки?
Ответ от нейросети
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, не меняя существующий код.