Sobes.tech
Intern

Príklad DIP ```go package main import "fmt" // Rozhranie pre abstrakciu ukladania dát type DataStorage interface { Save(data string) } // Nízkoúrovňový modul na ukladanie dát do súboru ```

sobes.tech AI

Odpoveď od AI

Pokračujme s príkladom implementácie princípu obrátenia závislostí (DIP) v Go.

package main

import "fmt"

// Rozhranie pre abstrakciu ukladania dát
// type DataStorage interface {
//     Save(data string)
// }

// Nízkoúrový modul pre ukladanie dát do súboru
type FileStorage struct {
    filename string
}

func (fs *FileStorage) Save(data string) {
    // Tu môže byť logika zápisu do súboru
    fmt.Printf("Ukladám dáta '%s' do súboru %s\n", data, fs.filename)
}

// Vysokoúrový modul, ktorý závisí od abstrakcie, nie od konkrétnej implementácie
type DataProcessor struct {
    storage DataStorage
}

func (dp *DataProcessor) Process(data string) {
    // Spracovanie dát
    processedData := data + "_processed"
    dp.storage.Save(processedData)
}

func main() {
    fileStorage := &FileStorage{filename: "data.txt"}
    processor := &DataProcessor{storage: fileStorage}

    processor.Process("príklad dát")
}

Tu DataProcessor závisí od rozhrania DataStorage, nie od konkrétnej implementácie FileStorage. To umožňuje ľahko meniť spôsob ukladania dát bez zmeny logiky spracovania.