Приведи пример использования принципов SOLID

Python Middle Без компании
Приведи пример использования принципов SOLID
Ответы
SOLID — это пять принципов объектно-ориентированного проектирования, которые помогают писать поддерживаемый и расширяемый код. ### **1. Single Responsibility (SRP)** Класс должен иметь только одну ответственность. ``` class User: def __init__(self, name: str): self.name = name class UserDB: def save(self, user: User): print(f"Saving {user.name} to database") ``` ### **2. Open/Closed (OCP)** Классы должны быть открыты для расширения, но закрыты для модификации. ``` from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod def area(self): pass class Circle(Shape): def __init__(self, radius): self.radius = radius def area(self): return 3.14 * self.radius ** 2 ``` ### **3. Liskov Substitution (LSP)** Подклассы должны заменять базовые классы без ошибок. ``` class Bird: def fly(self): pass class Penguin(Bird): def fly(self): raise Exception("Penguins can't fly!") # Нарушение LSP ``` ### **4. Interface Segregation (ISP)** Клиенты не должны зависеть от интерфейсов, которые они не используют. ``` class Printer(ABC): @abstractmethod def print(self): pass class Scanner(ABC): @abstractmethod def scan(self): pass class MultiFunctionDevice(Printer, Scanner): pass ``` ### **5. Dependency Inversion (DIP)** Зависимости должны строиться на абстракциях, а не на конкретных классах. ``` class Database(ABC): @abstractmethod def save(self, data): pass class MySQL(Database): def save(self, data): print(f"Saving {data} to MySQL") class UserService: def __init__(self, db: Database): self.db = db def create_user(self, name): self.db.save(name) ```