Что значит буква O в SOLID
Python
Middle
Evapps
Что значит буква O в SOLID
Ответы
Буква **O** в SOLID означает **Open-Closed Principle (Принцип открытости-закрытости)**.
**Суть:**
Программные сущности (классы, модули, функции) должны быть **открыты для расширения**, но **закрыты для модификации**. Это значит, что новую функциональность нужно добавлять без изменения существующего кода.
**Пример нарушения:**
```
class Discount:
def apply(self, customer_type):
if customer_type == "regular":
return 0.1 # 10% скидка
elif customer_type == "vip":
return 0.2 # 20% скидка
# При добавлении нового типа придется менять класс!
```
**Пример с соблюдением OCP:**
```
from abc import ABC, abstractmethod
class DiscountStrategy(ABC):
@abstractmethod
def apply(self):
pass
class RegularDiscount(DiscountStrategy):
def apply(self):
return 0.1
class VIPDiscount(DiscountStrategy):
def apply(self):
return 0.2
class Discount:
def __init__(self, strategy: DiscountStrategy):
self.strategy = strategy
def apply(self):
return self.strategy.apply()
```
**Плюсы:**
- Уменьшает риск ошибок при добавлении функциональности.
- Упрощает тестирование.
- Делает код гибче.