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

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

Ответ

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

  1. Single Responsibility (Принцип единственной ответственности)
    Класс должен решать только одну задачу.

  2. Open-Closed (Принцип открытости/закрытости)
    Классы должны быть открыты для расширения, но закрыты для модификации.

  3. Liskov Substitution (Принцип подстановки Барбары Лисков)
    Наследники должны корректно работать вместо родительских классов.

  4. Interface Segregation (Принцип разделения интерфейсов)
    Много специализированных интерфейсов лучше одного общего.

  5. Dependency Inversion (Принцип инверсии зависимостей)
    Зависимости на абстракциях, а не на конкретных реализациях.

Пример на Go (DIP):

type Storage interface {
    Save(data string) error
}

type Database struct{}

func (d *Database) Save(data string) error {
    // сохранение в БД
}

type Service struct {
    storage Storage
}

func NewService(s Storage) *Service {
    return &Service{storage: s}
}