Intern
DIP მაგალითი ```go package main import "fmt" // მონაცემთა შენახვის აბსტრაქციის ინტერფეისი type DataStorage interface { Save(data string) } // ფაილში მონაცემების შენახვის დაბალი დონის მოდული ```
sobes.tech AI
პასუხი AI-სგან
მოდით, განვაგრძოთ DIP-ის (დამოკიდებულების საპირისპირო პრინციპი) განხორციელების მაგალითით Go-ში.
package main
import "fmt"
// ინტერფეისი მონაცემების შენახვის აბსტრაქციისთვის
// type DataStorage interface {
// Save(data string)
// }
// დაბალ დონეზე მოდული მონაცემების შენახვისთვის ფაილში
type FileStorage struct {
filename string
}
func (fs *FileStorage) Save(data string) {
// აქ შეიძლება იყოს ფაილში ჩაწერის ლოგიკა
fmt.Printf("მონაცემები '%s' შენახულია %s ფაილში\n", data, fs.filename)
}
// მაღალ დონეზე მოდული, რომელიც დამოკიდებულია აბსტრაქციაზე, არა კონკრეტულ რეალიზაციაზე
type DataProcessor struct {
storage DataStorage
}
func (dp *DataProcessor) Process(data string) {
// მონაცემების დამუშავება
processedData := data + "_processed"
dp.storage.Save(processedData)
}
func main() {
fileStorage := &FileStorage{filename: "data.txt"}
processor := &DataProcessor{storage: fileStorage}
processor.Process("მაგალითი მონაცემი")
}
აქ, DataProcessor დამოკიდებულია DataStorage ინტერფეისზე, არა კონკრეტულ FileStorage რეალიზაციაზე. ეს საშუალებას აძლევს მარტივად შეცვალოთ მონაცემების შენახვის მეთოდი, დამუშავების ლოგიკას არ შეცვლის.