Sobes.tech
Назад к вопросам
Junior — Middle
70

Можешь привести пример, иллюстрирующий применение принципов SOLID в разработке?

Компании, где спрашивали
О5.ru
Летуаль

Ответ от нейросети

sobes.tech AI

Рассмотрим простой пример на Swift, иллюстрирующий применение принципов SOLID в iOS-разработке.

// Single Responsibility Principle: каждый класс отвечает за свою задачу
protocol DataFetcher {
    func fetchData(completion: (Data?) -> Void)
}

class NetworkDataFetcher: DataFetcher {
    func fetchData(completion: (Data?) -> Void) {
        // загрузка данных из сети
    }
}

// Open/Closed Principle: класс расширяем, но не изменяем
class DataProcessor {
    func process(data: Data) {
        // базовая обработка
    }
}

class JSONDataProcessor: DataProcessor {
    override func process(data: Data) {
        // обработка JSON
    }
}

// Dependency Inversion Principle: зависимость от абстракций
class ViewModel {
    private let dataFetcher: DataFetcher
    private let dataProcessor: DataProcessor

    init(dataFetcher: DataFetcher, dataProcessor: DataProcessor) {
        self.dataFetcher = dataFetcher
        self.dataProcessor = dataProcessor
    }

    func loadData() {
        dataFetcher.fetchData { data in
            if let data = data {
                dataProcessor.process(data: data)
            }
        }
    }
}

В этом примере:

  • Каждый класс имеет одну ответственность (SRP).
  • Можно расширять обработчики данных, не меняя базовый класс (OCP).
  • ViewModel зависит от абстракций (DataFetcher, DataProcessor), а не от конкретных реализаций (DIP).

Такой подход облегчает тестирование, поддержку и расширение кода.