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 ишке ашыруусуна эмес. Бул маалымат сактоо ыкмасын оңой алмаштырууга мүмкүндүк берет, иштетүү логикасын өзгөртпөстөн.