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"

// Տվյալների պահպանումը abstraction-ի համար ինտերֆեյս
// 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)
}

// Բարձր մակարդակի մոդուլ, որը կախված է abstraction-ից, ոչ թե կոնկրետ իրականացումից
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 իրականացումից: Սա թույլ է տալիս հեշտությամբ փոխել տվյալների պահպանումը, առանց փոփոխելու մշակման տրամաբանությունը: