Junior — Middle
100
¿Puedes dar un ejemplo que ilustre la aplicación de los principios SOLID en el desarrollo?
Empresas donde se preguntó
О5.ru
Летуаль
Respuesta de la IA
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).
Такой подход облегчает тестирование, поддержку и расширение кода.