Bagaimana untuk Melaksanakan Corak Reka Bentuk Singleton dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-13 01:34:02
asal
126 orang telah melayarinya

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;
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan