Sobes.tech
Back to questions
Middle
3

Расскажите про принципы SOLID

Companies where asked
Navio

Answer from AI

sobes.tech AI

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

  • S (Single Responsibility Principle) — принцип единственной ответственности: класс должен иметь только одну причину для изменения.
  • O (Open/Closed Principle) — принцип открытости/закрытости: программные сущности должны быть открыты для расширения, но закрыты для модификации.
  • L (Liskov Substitution Principle) — принцип подстановки Барбары Лисков: объекты подкласса должны быть заменяемы объектами суперкласса без нарушения работы программы.
  • I (Interface Segregation Principle) — принцип разделения интерфейса: клиенты не должны зависеть от интерфейсов, которые они не используют.
  • D (Dependency Inversion Principle) — принцип инверсии зависимостей: зависимости должны строиться на абстракциях, а не на конкретных реализациях.

Пример на Python:

from abc import ABC, abstractmethod

# Принцип единственной ответственности
class ReportGenerator:
    def generate(self):
        pass

class ReportSaver:
    def save(self, report):
        pass

# Принцип инверсии зависимостей
class Database(ABC):
    @abstractmethod
    def connect(self):
        pass

class MySQLDatabase(Database):
    def connect(self):
        print("Connecting to MySQL")

class Application:
    def __init__(self, db: Database):
        self.db = db

    def run(self):
        self.db.connect()

app = Application(MySQLDatabase())
app.run()

Этот пример демонстрирует разделение ответственности и использование абстракций для управления зависимостями.