Встречается на собеседованиях • сегодня

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

SOLID — это пять принципов объектно-ориентированного проектирования, которые помогают писать поддерживаемый и расширяемый код.

1. Single Responsibility (SRP)

Класс должен иметь только одну ответственность.

python
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)

Классы должны быть открыты для расширения, но закрыты для модификации.

python
from abc import ABC, abstractmethod

class Shape(ABC):
@abstractmethod
def area(self):
pass

class Circle(Shape):
def init(self, radius):
self.radius = radius

text
def area(self):
    return 3.14 * self.radius ** 2
text

### **3. Liskov Substitution (LSP)**  
Подклассы должны заменять базовые классы без ошибок.  

```python
class Bird:
    def fly(self):
        pass

class Penguin(Bird):
    def fly(self):
        raise Exception("Penguins can't fly!")  # Нарушение LSP

4. Interface Segregation (ISP)

Клиенты не должны зависеть от интерфейсов, которые они не используют.

python
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)

Зависимости должны строиться на абстракциях, а не на конкретных классах.

python
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)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы