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.