Sobes.tech
Intern

DIP példa ```go package main import "fmt" // Adattárolás absztrakciójához interfész type DataStorage interface { Save(data string) } // Alacsony szintű modul az adatok fájlba mentéséhez ```

sobes.tech MI

Válasz az MI-től

Folytassuk egy példával a függőségek fordított irányának (DIP) megvalósítására Go nyelven.

package main

import "fmt"

// Az adatok tárolásának absztrakciójára szolgáló interfész
// type DataStorage interface {
//     Save(data string)
// }

// Alacsony szintű modul az adatok fájlba mentéséhez
type FileStorage struct {
    filename string
}

func (fs *FileStorage) Save(data string) {
    // Itt lehet a fájlba írás logikája
    fmt.Printf("Adatok '%s' mentése a %s fájlba\n", data, fs.filename)
}

// Magas szintű modul, amely az absztrakciótól függ, nem a konkrét implementációtól
type DataProcessor struct {
    storage DataStorage
}

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

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

    processor.Process("példa adat")
}

Itt a DataProcessor az DataStorage interfészre támaszkodik, nem a konkrét FileStorage megvalósításra. Ez lehetővé teszi az adatok tárolási módjának könnyű cseréjét anélkül, hogy a feldolgozási logikát módosítani kellene.