2. O — Open/Closed Principle (Принцип открытости/закрытости)


2. O — Open/Closed Principle (Принцип открытости/закрытости)

Классы должны быть открыты для расширения, но закрыты для изменения.

Суть:

Мы не должны изменять существующий код, чтобы добавить новое поведение —
мы должны расширять его через наследование или композицию.

Пример:




// Нарушение OCP class Payment { void process(String type) { if (type.equals("card")) { /* логика карты */ } else if (type.equals("paypal")) { /* логика PayPal */ } } } // Правильно interface PaymentMethod { void pay(); } class CardPayment implements PaymentMethod { public void pay() { /* оплата картой */ } } class PayPalPayment implements PaymentMethod { public void pay() { /* оплата PayPal */ } } class PaymentProcessor { void process(PaymentMethod method) { method.pay(); } }


Автор: к.п.н., Румянцев Сергей Александрович, доцент Финансового университета при Правительстве РФ; доцент ОЧУВО Международного инновационного университета; Консалтинг, управление разработкой ПО; системный и бизнес анализ; менеджмент; аналитиз данных; управление ИТ. Телефон для связи +79269444818 (мессенджеры)   Короткая ссылка:

2. O — Open/Closed Principle (Принцип открытости/закрытости)

Классы должны быть открыты для расширения, но закрыты для изменения.

Суть:

Мы не должны изменять существующий код, чтобы добавить новое поведение —
мы должны расширять его через наследование или композицию.

Пример:




// Нарушение OCP class Payment { void process(String type) { if (type.equals("card")) { /* логика карты */ } else if (type.equals("paypal")) { /* логика PayPal */ } } } // Правильно interface PaymentMethod { void pay(); } class CardPayment implements PaymentMethod { public void pay() { /* оплата картой */ } } class PayPalPayment implements PaymentMethod { public void pay() { /* оплата PayPal */ } } class PaymentProcessor { void process(PaymentMethod method) { method.pay(); } }


https://webprogr.ru/~logoP
Короткая ссылка на новость:https://webprogr.ru/~logoP


// Пример кода
function hello(name) {
  console.log(`Hi, ${name}!`);
}
hello("Sergey");

Последние новости

Рейтинг@Mail.ru