Ответ
SOLID — это 5 принципов объектно-ориентированного дизайна, помогающих создавать поддерживаемый и масштабируемый код:
-
Single Responsibility (SRP) - класс должен решать только одну задачу. Например,
UserRepositoryтолько загружает данные, аUserViewModelобрабатывает логику. -
Open-Closed (OCP) - классы открыты для расширения, но закрыты для изменений. Используем интерфейсы:
interface Logger {
fun log(message: String)
}
-
Liskov Substitution (LSP) - наследники должны заменять родителей. Если
SquareнаследуетRectangle, его поведение не должно ломать логику родителя. -
Interface Segregation (ISP) - много специализированных интерфейсов лучше одного общего. Разделяем
OnClickListnerиOnLongClickListener. -
Dependency Inversion (DIP) - зависимости от абстракций, а не реализаций. Внедряем
Repositoryчерез конструктор:
class ViewModel(private val repo: Repository)
В Android это особенно важно для архитектуры (MVVM, Clean Architecture) и тестируемости кода.