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

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

DDD
Libérer: 2024-11-12 05:46:01
original
829 Les gens l'ont consulté

How to Implement the Singleton Pattern in Go?

Implémentation du modèle Singleton dans Go

Dans le domaine de la programmation orientée objet, le modèle Singleton vise à imposer la création d'un seul instance d'une classe ou d'un type tout au long de la durée de vie du programme. Voici comment réaliser ce modèle dans Go :

Utilisation de variables privées et d'un constructeur public :

Cette approche utilise des variables privées et un constructeur public pour restreindre l'instanciation directe du singleton :

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

En rendant single et instancié private, vous pouvez vous assurer que seule la fonction New peut instancier le singleton.

Utilisation de sync.Once :

Pour la sécurité des threads, vous pouvez utiliser le type sync.Once pour garantir que le singleton n'est initialisé qu'une seule fois, même en mode simultané. environnements :

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

Considérations :

Bien que le modèle Singleton puisse être utile dans certains scénarios, il est important de considérer ses inconvénients potentiels et d'explorer des approches alternatives. Les packages dans Go agissent intrinsèquement comme des singletons, offrant une véritable encapsulation et une véritable gestion des ressources. Par conséquent, évaluez soigneusement si un modèle Singleton traditionnel est nécessaire avant de le mettre en œuvre.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal