Sobes.tech
Intern

DIP Voorbeeld ```go package main import "fmt" // Interface voor abstractie van gegevensopslag type DataStorage interface { Save(data string) } // Laag-niveau module voor het opslaan van gegevens in een bestand ```

sobes.tech AI

Antwoord van AI

Laten we doorgaan met een voorbeeld van de implementatie van het principe van afhankelijkheidsomkering (DIP) in Go.

package main

import "fmt"

// Interface voor abstractie van gegevensopslag
// type DataStorage interface {
//     Save(data string)
// }

// Laag-niveau module voor gegevensopslag in een bestand
type FileStorage struct {
    filename string
}

func (fs *FileStorage) Save(data string) {
    // Hier zou de logica voor het schrijven naar een bestand kunnen staan
    fmt.Printf("Gegevens '%s' worden opgeslagen in het bestand %s\n", data, fs.filename)
}

// Hoog-niveau module die afhankelijk is van de abstractie, niet van de concrete implementatie
type DataProcessor struct {
    storage DataStorage
}

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

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

    processor.Process("voorbeeld data")
}

Hier hangt DataProcessor af van de interface DataStorage, niet van de concrete implementatie FileStorage. Dit maakt het gemakkelijk om de opslagmethode te veranderen zonder de verwerkingslogica aan te passen.