Sobes.tech
Junior — Middle
92

Můžeš uvést příklad, který ilustruje použití principů SOLID při vývoji?

Společnosti byly požádány
О5.ru
Летуаль

Odpověď od AI

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

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