SOLID – это принципы разработки программного обеспечения.
S – Single Responsibility Principle – принцип единственной ответственности. Каждый класс должен иметь только одну зону ответственности.
O – Open closed Principle – принцип открытости-закрытости. Классы должны быть открыты для расширения, но закрыты для изменения.
L – Liskov substitution Principle – принцип подстановки Барбары Лисков. Должна быть возможность вместо базового (родительского) типа (класса) подставить любой его подтип (класс-наследник), при этом работа программы не должна измениться.
I – Interface Segregation Principle – принцип разделения интерфейсов. Данный принцип обозначает, что не нужно заставлять клиента (класс) реализовывать интерфейс, который не имеет к нему отношения.
D – Dependency Inversion Principle – принцип инверсии зависимостей. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракции. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.