Sobes.tech
Junior — Middle

Объектке багытталган программалоодо көзкарандычылыктарды тескери багыттоо принциби деген эмне экенин түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

Тескөөдөштөрдүн керектөөчүлүк тескөөдөштөрүнүн (Dependency Inversion Principle, DIP) объект-бағдарланган программалоонун беш принциптеринин бири. Ал мындай дейт:

  • Жогорку деңгээлдеги модулдар төмөнкү деңгээлдеги модулдарга көз каранды болбошу керек. Экиси да абстракциялардан көз каранды болушу керек.
  • Абстракциялар деталдардан көз каранды болбошу керек. Деталдар абстракциялардан көз каранды болушу керек.

Бул клас башка класстардын так ишке ашырмаларын түзүп же колдонбостон, абстракциялар менен иштеши керек дегенди билдирет (мисалы, интерфейстер же протоколдор). Бул ийкемдүүлүктү арттырат жана тестти жеңилдетет.

Swift (iOS) мисалы:

protocol DataService {
    func fetchData() -> String
}

class APIService: DataService {
    func fetchData() -> String {
        return "APIден маалымат"
    }
}

class ViewModel {
    private let service: DataService

    init(service: DataService) {
        self.service = service
    }

    func load() {
        print(service.fetchData())
    }
}

let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load()  // Чыгуу: APIден маалымат

Мында, ViewModel DataService абстракциясына көз каранды, конкреттүү APIService эмес. Бул кызматтын ишке ашырмасын оңой алмаштырууга мүмкүндүк берет, мисалы, тесттер үчүн mock менен.