Sobes.tech
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.