Intern
Exemple DIP ```go package main import "fmt" // Interface pour l'abstraction du stockage de données type DataStorage interface { Save(data string) } // Module de bas niveau pour stocker des données dans un fichier ```
sobes.tech IA
Réponse de l'IA
Poursuivons avec un exemple d'implémentation du principe d'inversion des dépendances (DIP) en Go.
package main
import "fmt"
// Interface pour l'abstraction du stockage de données
// type DataStorage interface {
// Save(data string)
// }
// Module de bas niveau pour le stockage de données dans un fichier
type FileStorage struct {
filename string
}
func (fs *FileStorage) Save(data string) {
// Ici pourrait se trouver la logique d'écriture dans un fichier
fmt.Printf("Enregistrement des données '%s' dans le fichier %s\n", data, fs.filename)
}
// Module de haut niveau qui dépend de l'abstraction, pas de l'implémentation concrète
type DataProcessor struct {
storage DataStorage
}
func (dp *DataProcessor) Process(data string) {
// Traitement des données
processedData := data + "_processed"
dp.storage.Save(processedData)
}
func main() {
fileStorage := &FileStorage{filename: "data.txt"}
processor := &DataProcessor{storage: fileStorage}
processor.Process("exemple de données")
}
Ici, DataProcessor dépend de l'interface DataStorage, et non de l'implémentation concrète FileStorage. Cela permet de changer facilement la méthode de stockage des données sans modifier la logique de traitement.