Какие паттерны соответствуют принципам SOLID

Python Senior Без компании
Какие паттерны соответствуют принципам SOLID
Ответы
**Single Responsibility Principle (SRP)** Каждый класс должен иметь одну ответственность. Пример: ``` class User: def __init__(self, name): self.name = name class UserDB: def save(self, user): print(f"Saving {user.name} to DB") ``` **Open-Closed Principle (OCP)** Классы открыты для расширения, но закрыты для модификации. Пример: ``` class Discount: def apply(self, price): return price class VIPDiscount(Discount): def apply(self, price): return price * 0.8 ``` **Liskov Substitution Principle (LSP)** Подклассы должны заменять базовые классы. Пример: ``` class Bird: def fly(self): pass class Duck(Bird): def fly(self): print("Duck flying") # Не нарушает LSP ``` **Interface Segregation Principle (ISP)** Много специализированных интерфейсов лучше одного общего. Пример: ``` class Printer: def print(self): pass class Scanner: def scan(self): pass # Вместо одного интерфейса с print() и scan() ``` **Dependency Inversion Principle (DIP)** Зависимости на абстракциях, а не на деталях. Пример: ``` class Database(ABC): @abstractmethod def connect(self): pass class MySQL(Database): def connect(self): print("MySQL connection") class App: def __init__(self, db: Database): self.db = db ```