Corak suntikan kebergantungan dalam lulus parameter fungsi Golang

WBOY
Lepaskan: 2024-04-14 10:15:02
asal
1089 orang telah melayarinya

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)
    }
    Salin selepas log masuk
    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 {
            // 处理错误
        }
    }
    Salin selepas log masuk
    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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!