Sobes.tech
Intern

DIP piemērs ```go package main import "fmt" // Interfeiss datu glabāšanas abstrakcijai type DataStorage interface { Save(data string) } // Zemas līmeņa modulis datu glabāšanai failā ```

sobes.tech AI

Atbilde no AI

Turpināsim ar piemēru, kā īstenot atkarību apgriešanas principu (DIP) Go valodā.

package main

import "fmt"

// Interfeiss datu glabāšanas abstrakcijai
// type DataStorage interface {
//     Save(data string)
// }

// Zema līmeņa modulis datu glabāšanai failā
type FileStorage struct {
    filename string
}

func (fs *FileStorage) Save(data string) {
    // Šeit varētu būt rakstīšanas loģika failā
    fmt.Printf("Saglabāju datus '%s' failā %s\n", data, fs.filename)
}

// Augsta līmeņa modulis, kas ir atkarīgs no abstrakcijas, nevis no konkrētas realizācijas
type DataProcessor struct {
    storage DataStorage
}

func (dp *DataProcessor) Process(data string) {
    // Datu apstrāde
    processedData := data + "_processed"
    dp.storage.Save(processedData)
}

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

    processor.Process("parauga dati")
}

Šeit, DataProcessor ir atkarīgs no DataStorage interfeisa, nevis no konkrētas FileStorage realizācijas. Tas ļauj viegli mainīt datu glabāšanas veidu, nemainot apstrādes loģiku.