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

Какие знаешь основные принципы SOLID

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

  1. Single Responsibility (SRP) — класс должен иметь только одну причину для изменения (одну ответственность).

    python
    # Плохо: класс и логирует, и сохраняет данные
    class User:
        def save(self): ...
        def log(self): ...
    
    # Хорошо: разделение на два класса
    class User:
        def save(self): ...
    class Logger:
        def log(self): ...
  2. Open-Closed (OCP) — классы должны быть открыты для расширения, но закрыты для модификации.

    python
    class Discount:
        def apply(self): ...
    class VIPDiscount(Discount):  # Расширение без изменения базового класса
        def apply(self): ...
  1. Liskov Substitution (LSP) — подклассы должны заменять родительские классы без изменения поведения программы.

    python
    class Bird:
        def fly(self): ...
    class Penguin(Bird):  # Нарушение LSP, т.к. пингвины не летают
        def fly(self): raise NotImplementedError
  2. Interface Segregation (ISP) — клиенты не должны зависеть от методов, которые они не используют.

    python
    # Плохо: один интерфейс с избыточными методами
    class Worker:
        def work(self): ...
        def eat(self): ...
    
    # Хорошо: разделение интерфейсов
    class Workable:
        def work(self): ...
    class Eatable:
        def eat(self): ...
  3. Dependency Inversion (DIP) — зависимости должны строиться на абстракциях, а не на конкретных реализациях.

    python
    class Database(ABC):
        @abstractmethod
        def save(self): ...
    class MySQL(Database): ...
    class UserService:
        def __init__(self, db: Database): ...  # Зависимость от абстракции
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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