Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Corak suntikan kebergantungan dalam lulus parameter fungsi Golang

Corak suntikan kebergantungan dalam lulus parameter fungsi Golang

WBOY
WBOYasal
2024-04-14 10:15:021055semak imbas

Dalam Go, corak suntikan kebergantungan (DI) dilaksanakan melalui hantaran parameter fungsi, termasuk hantaran nilai dan hantaran penunjuk. Dalam corak DI, kebergantungan biasanya diluluskan sebagai petunjuk untuk meningkatkan penyahgandingan, mengurangkan pertikaian kunci dan menyokong kebolehujian. Dengan menggunakan penunjuk, fungsi itu dipisahkan daripada pelaksanaan konkrit kerana ia hanya bergantung pada jenis antara muka. Hantaran penunjuk juga mengurangkan overhed menghantar objek besar, dengan itu mengurangkan pertikaian kunci. Selain itu, corak DI memudahkan untuk menulis ujian unit untuk fungsi yang menggunakan corak DI kerana kebergantungan boleh dipermainkan dengan mudah. . Dalam Go, DI biasanya dilaksanakan melalui hantaran hujah fungsi.

Corak suntikan kebergantungan dalam lulus parameter fungsi GolangJenis parameter passing

Terdapat dua jenis fungsi parameter passing dalam Go:

Value passing: Parameter variable ialah salinan nilai asal dan sebarang perubahan pada parameter variable tidak akan menjejaskan nilai asal.

Hantaran penunjuk:

Pembolehubah parameter ialah penunjuk kepada nilai asal dan perubahan pada pembolehubah parameter juga akan mempengaruhi nilai asal.

Parameter lulus dalam corak DI

  • Dalam corak DI, kebergantungan biasanya diluluskan sebagai penunjuk. Faedah melakukan ini adalah seperti berikut:
  • Penyahgandingan yang lebih baik: Dengan menggunakan penunjuk, fungsi dipisahkan daripada pelaksanaan konkrit kerana ia hanya bergantung pada jenis antara muka.
Kurangkan pertengkaran kunci:

Petunjuk yang lulus boleh mengurangkan overhed objek besar yang melepasi, dengan itu mengurangkan pertengkaran kunci.

Sokongan untuk kebolehujian:

Lebih mudah untuk menulis ujian unit untuk fungsi menggunakan corak DI kerana kebergantungan boleh dipermainkan dengan mudah.

  • Kes praktikal
  • Pertimbangkan UserService, yang perlu mengakses Repositori Pengguna:
    type UserService struct {
        userRepository UserRepository
    }
    
    func (s *UserService) CreateUser(user *User) error {
        return s.userRepository.Create(user)
    }
    Kami boleh menggunakan corak DI untuk menyediakan contoh UserRepository untuk UserService:
  • func main() {
        // 创建 UserRepository 实例
        userRepository := NewUserRepository()
    
        // 创建 UserService 实例并注入 UserRepository
        userService := UserService{
            userRepository: userRepository,
        }
    
        // 使用 UserService
        user := &User{Name: "John"}
        err := userService.CreateUser(user)
        if err != nil {
            // 处理错误
        }
    }
    menggunakan pointer,Repository
  • Repository UserService dipisahkan daripada pelaksanaan khusus UserRepository . Kami boleh membuat pelaksanaan yang berbeza dengan mudah untuk UserRepository dan menyuntiknya ke dalam UserService.
  • Kesimpulan

Corak DI dalam hantaran hujah fungsi ialah teknik yang berkuasa dan fleksibel dalam Go untuk mengurus kebergantungan antara objek. Ia meningkatkan penyahgandingan, mengurangkan perbalahan kunci, dan menyokong kebolehujian.

Atas ialah kandungan terperinci Corak suntikan kebergantungan dalam lulus parameter fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn