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.