Принципы SOLID

S – Single Responsibility Principle – Принцип единственной ответственности. Каждый класс должен решать только одну задачу

O – Open-closed Principle – Принцип открытости и закрытости (наследование). Классы, модули, функции открыты для расширения, но не для модификации

L – принцип подстановки Лисков. Подклассы должны дополнять, а не замещать поведение базового класса

I – Принцип разделения интерфейсов. Нужно создавать узкоспециализированные интерфейсы. Лучше использовать несколько небольших интерфейсов, чем один большой с кучей методов.

D — Принцип инверсии зависимостей. Объектом зависимости должна быть абстракция, а не что-то конкретное