Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melaksanakan Corak Reka Bentuk Singleton dalam Go?

Bagaimana untuk Melaksanakan Corak Reka Bentuk Singleton dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-13 01:34:02221semak imbas

How to Implement the Singleton Design Pattern in Go?

Melaksanakan Corak Reka Bentuk Singleton dalam Go

Corak reka bentuk Singleton mengehadkan instantiasi kelas kepada objek tunggal. Walaupun penggunaannya sering diperdebatkan, dalam senario tertentu, ia boleh menjadi penyelesaian praktikal.

Pelaksanaan

Untuk melaksanakan corak Singleton dalam Go, kita mulakan dengan perkara berikut kod:

package singleton

type single struct {
        O interface{};
}

var instantiated *single = nil

func New() *single {
        if instantiated == nil {
                instantiated = new(single);
        }
        return instantiated;
}

Di sini, satu struct peribadi mentakrifkan objek yang ingin kami hadkan kepada satu kejadian. Pembolehubah persendirian yang di instantiated menjejaki instantiasi objek. Kami mentakrifkan fungsi awam New() untuk mendapatkan semula tika.

Keselamatan Benang

Walau bagaimanapun, pelaksanaan ini tidak selamat untuk benang. Untuk menangani perkara ini, kita boleh menggunakan penyegerakan.Sekali taip:

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
}

Di sini, penyegerakan.Sekali memastikan bahawa singleton hanya dibuat seketika, walaupun dalam persekitaran serentak.

Alternatif

Sebagai alternatif, adalah wajar mempertimbangkan skop peringkat pakej sebagai cara mudah untuk menguatkuasakan tingkah laku tunggal.

Ringkasnya, melaksanakan corak Singleton dalam Go melibatkan kawalan penciptaan contoh melalui satu fungsi. Keselamatan benang boleh dicapai menggunakan penyegerakan. Sekali. Walau bagaimanapun, seperti yang dicadangkan, adalah bijak untuk mempersoalkan keperluan singleton dalam kod anda untuk memastikan reka bentuk yang tersusun dan boleh diselenggara dengan baik.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Corak Reka Bentuk Singleton dalam Go?. 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