SOLID - это акроним, обозначающий пять основных принципов проектирования, разработанных Робертом Мартином:
- Single Responsibility Principle (SRP) - Принцип единственной ответственности: Класс должен иметь только одну причину для изменения. Это означает, что у класса должна быть только одна ответственность или функция.
- Open/Closed Principle (OCP) - Принцип открытости/закрытости: Программные сущности (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации. Новое поведение должно добавляться путем создания нового кода, а не путем изменения существующего.
- Liskov Substitution Principle (LSP) - Принцип подстановки Барбары Лисков: Объекты в программе должны быть заменяемы экземплярами их подтипов без изменения правильности выполнения программы. Если
S является подтипом T, то объекты типа T в программе могут быть заменены объектами типа S без нарушения ожидаемого поведения.
- Interface Segregation Principle (ISP) - Принцип разделения интерфейсов: Клиенты не должны быть вынуждены зависеть от интерфейсов, которые они не используют. Лучше иметь много маленьких, специфичных интерфейсов, чем один большой общий интерфейс.
- Dependency Inversion Principle (DIP) - Принцип инверсии зависимостей:
- Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
- Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Это достигается за счет использования абстракций (интерфейсов или абстрактных классов), через которые взаимодействуют модули, а не напрямую.