Что значит буква 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() ``` **Плюсы:** - Уменьшает риск ошибок при добавлении функциональности. - Упрощает тестирование. - Делает код гибче.