Backend Typescript 1.0.0 Help

SOLID

Принципы SOLID и их связь с ООП

SOLID — это набор пяти принципов проектирования объектно-ориентированных систем. Они формулируют, как правильно применять базовые возможности ООП: наследование, инкапсуляцию, полиморфизм и абстракцию. Фактически, SOLID — это мост между «теорией» объектно-ориентированного подхода и «практикой» написания гибкого и поддерживаемого кода.

S — Single Responsibility Principle (Принцип единственной ответственности)

Каждый класс должен отвечать только за одну задачу. Этот принцип напрямую связан с инкапсуляцией: скрывая детали реализации, мы выделяем чёткие зоны ответственности.

  • ООП даёт инструмент — класс.

  • SOLID уточняет: класс должен инкапсулировать одну ответственность, а не десятки.

Схема для SRP:

Принцип SRP

O — Open/Closed Principle (Принцип открытости-закрытости)

Программные сущности должны быть открыты для расширения, но закрыты для изменения. Это прямое следствие абстракции и полиморфизма.

  • ООП даёт нам интерфейсы и абстрактные классы.

  • SOLID говорит: расширяйте поведение через новые реализации, а не меняйте старый код.

Схема для OCP:

Принцип OCP

L — Liskov Substitution Principle (Принцип подстановки Барбары Лисков)

Подклассы должны быть взаимозаменяемы с базовыми классами. Этот принцип уточняет, как использовать наследование. Если класс B наследуется от класса A, то любой код, работающий с A, должен корректно работать и с B.

  • ООП даёт наследование и полиморфизм.

  • SOLID требует: наследование должно сохранять инварианты и ожидания базового класса.

Схема для LSP:

Принцип LSP

I — Interface Segregation Principle (Принцип разделения интерфейсов)

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

  • ООП позволяет объявлять интерфейсы или абстрактные классы.

  • SOLID говорит: делите их на небольшие, специализированные интерфейсы.

Схема для ISP:

Принцип ISP

D — Dependency Inversion Principle (Принцип инверсии зависимостей)

Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа должны зависеть от абстракций. Это развитие идеи полиморфизма и инкапсуляции.

  • ООП даёт абстракции (интерфейсы, базовые классы).

  • SOLID формулирует: связывайтесь через абстракцию, а не через конкретику.

Схема для DIP:

Принцип DIP

Вывод: ООП → SOLID и обратно

SOLID не вводит новых сущностей, которых нет в ООП. Он лишь уточняет, как правильно применять ООП. Принципы ООП дают инструменты: классы, объекты, наследование, инкапсуляцию, полиморфизм. Принципы SOLID говорят, как пользоваться этими инструментами, чтобы избежать ошибок.

  • SRP — уточнение инкапсуляции: каждая капсула должна содержать одну ответственность.

  • OCP — уточнение абстракции: расширяйте через новые реализации, а не меняйте старые.

  • LSP — уточнение наследования: наследники не должны ломать поведение родителей.

  • ISP — уточнение интерфейсов: делайте маленькие и специализированные интерфейсы.

  • DIP — уточнение полиморфизма: связывайтесь через абстракции, а не через конкретные классы.

Last modified: 01 October 2025