Расшифруй аббревиатуру SOLID

«Расшифруй аббревиатуру SOLID» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SOLID — это принципы объектно-ориентированного проектирования:

  1. Single Responsibility (единственная ответственность) — класс должен решать только одну задачу.
  2. Open/Closed (открытость/закрытость) — классы должны быть открыты для расширения, но закрыты для изменений.
  3. Liskov Substitution (подстановка Лисков) — наследники должны заменять родительские классы без нарушения логики.
  4. Interface Segregation (разделение интерфейсов) — лучше много узкоспециализированных интерфейсов, чем один универсальный.
  5. Dependency Inversion (инверсия зависимостей) — зависимости должны строиться на абстракциях, а не на конкретных реализациях.

Пример для S (Kotlin):

// Плохо: класс и логирует, и сохраняет данные  
class UserManager {  
    fun save(user: User) { /*...*/ }  
    fun log(message: String) { /*...*/ }  
}  

// Хорошо: разделение ответственностей  
class UserRepository { fun save(user: User) }  
class Logger { fun log(message: String) }