Назад к вопросам
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).
Такой подход облегчает тестирование, поддержку и расширение кода.