Sobes.tech
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 რეალიზაციაზე. ეს საშუალებას აძლევს მარტივად შეცვალოთ მონაცემების შენახვის მეთოდი, დამუშავების ლოგიკას არ შეცვლის.