Mendaftar Pakej dalam Go tanpa Mencipta Kebergantungan Pekeliling
Masalah
Pertimbangkan pakej pusat yang menyediakan antara muka yang bergantung pada beberapa pakej lain. Setiap pakej bergantung menawarkan pelbagai pelaksanaan antara muka ini. Matlamatnya adalah untuk memaklumkan pakej pusat tentang pelaksanaan ini untuk membolehkan instantiasi pelanggan, tetapi mengimport pakej bergantung dalam pakej pusat mewujudkan pergantungan bulat.
Penyelesaian
Pustaka standard Go menawarkan dua pendekatan untuk atasi isu ini:
1. Tanpa Pendaftaran "Pusat"
- Tentukan antara muka dalam pakej pusat dan rangkumkan pelaksanaan dalam pakej berasingan.
- Secara eksplisit pelaksanaan yang dikehendaki, nyatakan nama pakej.
- Contoh: Pakej crypto mentakrifkan antara muka Hash, manakala pelaksanaan konkrit ditemui dalam pakej berasingan seperti crypto/md5 dan crypto/sha256.
2. Dengan Pendaftaran "Pusat"
- Pelaksanaan mendaftarkan diri mereka dalam pakej pusat, biasanya melalui fungsi package init().
- Contoh: Pakej imej mentakrifkan antara muka Imej dan berbilang format imej pelaksanaan dalam pakej seperti imej/gif dan imej/jpeg.
Penyelesaian Alternatif (Cadangan): Pendaftaran "Tersuai"
- Buat pakej orang tengah (cth., pf) yang mengimport kedua-dua pakej pusat (pi) dan pakej pelaksanaan (cth., pa, pb).
- Tentukan kaedah "kilang" dalam pf untuk menginsafkan pelanggan, mengelakkan pergantungan bulat antara pf dan yang lain pakej.
Cadangan
Penyelesaian terbaik bergantung pada keperluan. Pilihan 1 diutamakan jika pemilihan pelaksanaan boleh dibuat terlebih dahulu. Pilihan 2 membenarkan pelanjutan, tetapi memerlukan pendaftaran yang jelas. Pilihan 3 menawarkan kompromi antara kemudahan dan kebolehlanjutan.
Atas ialah kandungan terperinci Bagaimana untuk Mendaftar Pakej Go Tanpa Membuat Ketergantungan Pekeliling?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!