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.