Single Responsibility, каждый объект должен иметь одну ответственность и эта ответственность должна быть полностью инкапсулирована в класс. Open/close principle, программные сущности (классы, модули, функции и т. п.) должны быть открыт для расширения, но закрыты для изменения. Liskov принципы: Interface segregation - разбиение больших интерфейсов на маленькие, в классе имплементирующем не должно быть не используемых методов интерфейса. Dependency Inversion - зависимости внутри системы строятся на основе абстракций. Модули верхнего уровня не зависят от модулей нижнего уровня. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Хорошее объяснение:
https://www.youtube.com/watch?v=47-F0wGz-Vk GitLab с примерами solid: Выплаты, пособия от государства, экономические новости читать здесь: https://t.me/+fbTtq1Tpb_45NGUy