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 }
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 }
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!