digital-garden/dev/architecture/Open Closed Principle.md
Struchkov Mark 1536a6c68c
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-09-27 20:25:32 +03:00

52 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
- Open/Closed Principle
- OCP
- Принцип открытости/закрытости
tags:
- maturity/🌱
date: 2024-09-27
zero-link:
- "[[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]]"
parents:
- "[[SOLID|SOLID]]"
linked:
---
Классы должны быть открыты для расширения, но закрыты для модификации. Это значит, что поведение класса можно расширить без изменения его исходного кода. Обычно это достигается через наследование или использование интерфейсов.
- **Пример нарушения OCP**: Изменение существующего класса для добавления нового функционала (например, новый способ оплаты).
- **Решение**: Использовать интерфейсы или абстрактные классы для расширения функционала без изменения базового кода.
```java
public interface PaymentMethod {
void pay(double amount);
}
public class CreditCardPayment implements PaymentMethod {
@Override
public void pay(double amount) {
// Оплата через кредитную карту
}
}
public class PayPalPayment implements PaymentMethod {
@Override
public void pay(double amount) {
// Оплата через PayPal
}
}
```
***
## Мета информация
**Область**:: [[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]]
**Родитель**:: [[SOLID|SOLID]]
**Источник**::
**Создана**:: [[2024-09-27]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->