S.O.L.I.D — это основной принцип, используемый при разработке программного обеспечения, который впервые был концептуализирован Робертом К. Мартином. Эта пятибуквенная аббревиатура подразумевает пять объектно-ориентированных концепций, которым необходимо следовать при разработке программного обеспечения.

S: Принцип единой ответственности.

У класса должна быть одна и только одна причина для изменения, а это означает, что у класса должна быть только одна работа.

Этот принцип очень полезен, когда дело доходит до тестирования, поскольку у него будет меньше тестовых случаев. Кроме того, при кодировании с использованием этого принципа связь будет меньше, так как будет несколько зависимостей.

O : Открытый — закрытый принцип

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

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

L : принцип замены Лисков

Объекты в программе должны заменяться экземплярами их подтипов без изменения правильности этой программы.

В этом принципе объекты подклассов определенного базового класса должны быть такими же, как и объекты базового класса. То есть объекты базового класса могут быть заменены объектами подкласса.

I : Принцип разделения интерфейса

Многие клиентские интерфейсы лучше, чем один интерфейс общего назначения.

Роберт С. Мартин определил этот принцип следующим образом: «Клиенты не должны зависеть от интерфейсов, которые они не используют». . То есть, как программист, он никогда не должен предсказывать будущее и создавать функции, которые, по его мнению, могут быть полезны для предстоящих обновлений. И в этом принципе интерфейс не должен быть перегружен.

Важной целью принципа разделения интерфейса является разделение программного обеспечения на более мелкие части и сокращение реализаций и побочных эффектов при изменении конкретного кода.

D : Принцип инверсии зависимости

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

Согласно определению Роберта С. Мартина принципа инверсии зависимостей, как высокоуровневые, так и низкоуровневые модули должны зависеть от абстракции, но высокоуровневые модули не должны зависеть от низкоуровневых модулей. Кроме того, абстракция не должна полагаться на детали.