Maison > développement back-end > Golang > le corps du texte

Comment implémenter le modèle de conception Singleton dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-13 01:34:02
original
174 Les gens l'ont consulté

How to Implement the Singleton Design Pattern in Go?

Implémentation du modèle de conception Singleton dans Go

Le modèle de conception Singleton restreint l'instanciation d'une classe à un seul objet. Bien que son utilisation soit souvent débattue, dans certains scénarios, cela peut être une solution pratique.

Implémentation

Pour implémenter le modèle Singleton dans Go, nous commençons par ce qui suit code :

package singleton

type single struct {
        O interface{};
}

var instantiated *single = nil

func New() *single {
        if instantiated == nil {
                instantiated = new(single);
        }
        return instantiated;
}
Copier après la connexion

Ici, une structure privée single définit l'objet que nous voulons limiter à une seule instance. La variable privée instanciée garde la trace de l'instanciation de l'objet. Nous définissons une fonction publique New() pour récupérer l'instance.

Thread Safety

Cependant, cette implémentation n'est pas thread-safe. Pour résoudre ce problème, nous pouvons utiliser le type sync.Once :

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
}
Copier après la connexion

Ici, sync.Once garantit que le singleton n'est instancié qu'une seule fois, même dans des environnements simultanés.

Alternatives

Alternativement, il vaut la peine d'envisager la portée au niveau du package comme un moyen simple d'appliquer le singleton comportement.

En résumé, la mise en œuvre du modèle Singleton dans Go implique de contrôler la création d'instance via une seule fonction. La sécurité des threads peut être obtenue en utilisant sync.Once. Cependant, comme suggéré, il est sage de remettre en question la nécessité de singletons dans votre code pour garantir une conception bien structurée et maintenable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal