Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man das Singleton-Entwurfsmuster in Go?

Wie implementiert man das Singleton-Entwurfsmuster in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 01:34:02176Durchsuche

How to Implement the Singleton Design Pattern in Go?

Implementierung des Singleton-Entwurfsmusters in Go

Das Singleton-Entwurfsmuster beschränkt die Instanziierung einer Klasse auf ein einzelnes Objekt. Obwohl seine Verwendung oft diskutiert wird, kann es in bestimmten Szenarien eine praktische Lösung sein.

Implementierung

Um das Singleton-Muster in Go zu implementieren, beginnen wir mit Folgendem Code:

package singleton

type single struct {
        O interface{};
}

var instantiated *single = nil

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

Hier definiert eine private Struktur Single das Objekt, das wir auf eine einzelne Instanz beschränken möchten. Die instanziierte private Variable verfolgt die Instanziierung des Objekts. Wir definieren eine öffentliche Funktion New(), um die Instanz abzurufen.

Thread-Sicherheit

Diese Implementierung ist jedoch nicht Thread-sicher. Um dies zu beheben, können wir den Typ sync.Once verwenden:

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
}

Hier stellt sync.Once sicher, dass der Singleton auch in gleichzeitigen Umgebungen nur einmal instanziiert wird.

Alternativen

Alternativ lohnt es sich, das Scoping auf Paketebene als einfache Möglichkeit zur Durchsetzung in Betracht zu ziehen Singleton-Verhalten.

Zusammenfassend lässt sich sagen, dass die Implementierung des Singleton-Musters in Go die Steuerung der Instanzerstellung durch eine einzelne Funktion beinhaltet. Thread-Sicherheit kann mit sync.Once erreicht werden. Wie bereits erwähnt, ist es jedoch ratsam, die Notwendigkeit von Singletons in Ihrem Code zu hinterfragen, um ein gut strukturiertes und wartbares Design sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie implementiert man das Singleton-Entwurfsmuster in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn