Sobes.tech
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).

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