Вопрос проверяет понимание принципов SOLID и их применение.
SOLID - 5 принципов ООП: Single responsibility, Open-closed, Liskov substitution, Interface segregation, Dependency inversion. В Android SDK есть нарушения, например в Activity.
Принципы SOLID:
Single Responsibility (Activity)
Нарушение: Activity часто делает слишком много (UI, логика, навигация)
Open-Closed (View)
Нарушение: Классы View сложно расширять без модификации
Liskov Substitution (DialogFragment)
Нарушение: Не все DialogFragment взаимозаменяемы
Interface Segregation (OnClickListener)
Нарушение: Один интерфейс для разных событий кликов
Dependency Inversion (SharedPreferences)
Нарушение: Прямая зависимость от конкретной реализации
Пример нарушения SRP:
class MainActivity : AppCompatActivity() {
// Нарушение: Activity управляет всем
fun loadData() { /*...*/ }
fun setupUI() { /*...*/ }
fun handleBusinessLogic() { /*...*/ }
}Как исправить (пример для DI):
// Вместо:
class MyClass {
private val prefs = SharedPreferences(...)
}
// По принципу DIP:
class MyClass(private val storage: StorageInterface)Вывод:
SOLID помогает создавать поддерживаемый код, но в Android SDK есть исторические нарушения для обратной совместимости.