Melaksanakan Corak Singleton dalam Go
Dalam bidang pengaturcaraan berorientasikan objek, corak Singleton bertujuan untuk menguatkuasakan penciptaan satu contoh kelas atau jenis sepanjang hayat program. Begini cara anda boleh mencapai corak ini dalam Go:
Menggunakan Pembolehubah Persendirian dan Pembina Awam:
Pendekatan ini menggunakan pembolehubah persendirian dan pembina awam untuk menyekat instantiasi langsung singleton:
package singleton type single struct { O interface{} } var instantiated *single = nil func New() *single { if instantiated == nil { instantiated = new(single) } return instantiated }
Dengan menjadikan single dan instantiated peribadi, anda boleh memastikan bahawa hanya fungsi Baharu boleh instantiate singleton.
Menggunakan penyegerakan.Sekali:
Untuk keselamatan benang, anda boleh menggunakan penyegerakan.Taip sekali untuk memastikan singleton dimulakan sekali sahaja, malah secara serentak persekitaran:
package singleton import "sync" type single struct { O interface{} } var instantiated *single var once sync.Once func New() *single { once.Do(func() { instantiated = &single{} }) return instantiated }
Pertimbangan:
Walaupun corak Singleton boleh berguna dalam senario tertentu, adalah penting untuk mempertimbangkan potensi kelemahannya dan meneroka pendekatan alternatif. Pakej dalam Go sememangnya bertindak sebagai individu tunggal, menyediakan pengkapsulan sebenar dan pengurusan sumber. Oleh itu, nilai dengan teliti sama ada corak Singleton tradisional diperlukan sebelum melaksanakannya.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Corak Singleton dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!