Le modèle de conception singleton est un modèle de conception largement utilisé dans la programmation orientée objet car il garantit qu'une seule instance de classe est créée, et pour y accéder fournit un point d'accès global. Cela signifie que chaque demande pour une instance de la classe renvoie la même instance, plutôt que de créer une nouvelle.
Motif de conception singleton en C #
Le singleton est connu pour sa simplicité et son efficacité pour s'assurer qu'il n'y a qu'une seule instance de la classe, ce qui en fait un choix populaire pour de nombreux développeurs de logiciels. Le modèle Singleton est souvent utilisé pour s'assurer qu'un seul point d'accès existe à une ressource ou un service partagé, voici la syntaxe pour l'utiliser:
classe scellée publique
en lecture statique privéeinstance = nouveau ();
privé()
STATIQUE PUBLIQUEExemple
obtenir
retour d'instance;
Le mot-clé scellé est utilisé pour empêcher que la classe soit héritée et le champ d'instance est marqué comme étant unique pour s'assurer qu'il ne peut être initialisé qu'une seule fois, et il est initialisé à la déclaration avec une seule instance de la classe. Le constructeur est marqué comme privé pour empêcher l'instanciation externe de la classe et la propriété d'instance fournit un moyen d'accéder à l'instance unique de la classe et est marquée comme statique afin qu'elle puisse être accessible sans créer une instance de la classe.
En C #, un modèle Singleton est généralement implémenté à l'aide d'un constructeur privé, d'un champ d'instance statique et d'une propriété ou d'une méthode statique publique pour accéder à l'instance. L'idée de base est de s'assurer qu'une seule instance de la classe peut exister en contrôlant comment elle est instanciée et accessible, voici un exemple de code qui démontre la création et l'utilisation du modèle de conception singleton en C #:
Utilisation du système;
// Définissez la classe de calculatrice avec un constructeur privé et un champ d'instance statique
calculatrice de classe scellée publique
Instance de calculatrice statique privée;
Calculatrice privée () // Le constructeur privé empêche l'instanciation de la classe de calculatrice de l'extérieur de la classe elle-même
// Définissez la propriété d'instance, qui crée un nouvel objet de calculatrice si l'on n'existe pas déjà et le renvoie
Instance de calculatrice statique publique
obtenir
if (instance == null) // Vérifiez si un objet de calculatrice a déjà été créé
instance = nouveau calculatrice (); // Sinon, créez un nouvel objet de calculatrice et affectez-le au champ d'instance
retour d'instance;
public int add (int x, int y)
retour x + y;
// définir la méthode de soustraction, qui soustrait un entier d'un autre et renvoie le résultat
Public int soustrait (int x, int y)
retour x - y;
// Définissez la classe de programme avec une méthode principale
programme de classe
statique void main (String [] args)
Calculatrice calculateur.Exemple; // Obtenez une instance de l'objet de calculatrice à l'aide de la propriété d'instance
Int result1 = calc.Ajouter (5, 7); // Utilisez la méthode ADD pour ajouter 5 et 7 ensemble
Console.WriteLine ($ "result1: result1"); // Sortie du résultat de l'ajout à la console
Int Result2 = calc.Soustraire (10, 3); // utilise la méthode de soustraction pour soustraire 3 de 10
Console.WriteLine ($ "result2: result2"); // Sortie du résultat de la soustraction de la console
Dans cet exemple, la classe de calculatrice est définie avec un constructeur privé et un champ d'instance statique. Le constructeur privé empêche la classe d'être instanciée de l'extérieur de la classe elle-même, tandis que le champ d'instance statique garantit qu'une seule instance de la classe peut exister à la fois.
La classe de calculatrice comprend également une propriété d'instance, qui crée un nouvel objet de calculatrice si l'on n'existe pas déjà et le renvoie. La première fois que la propriété d'instance est appelée, il crée un nouvel objet de calculatrice et le affecte au champ d'instance, tous les appels ultérieurs à la propriété d'instance renvoie simplement l'objet de calculatrice existante.
La classe de calculatrice comprend également des méthodes d'ajout et de soustraction, qui effectuent des opérations arithmétiques de base et renvoient le résultat. Ces méthodes sont simplement incluses comme exemple du type de fonctionnalité que la classe de calculatrice pourrait fournir.
Enfin, la classe de programme comprend une méthode principale, qui crée une instance de la classe de calculatrice à l'aide de la propriété d'instance et utilise les méthodes ADD et Soustraire pour effectuer des calculs simples. Les résultats de ces calculs sont ensuite émis par la console à l'aide de la console.Méthode d'écriture.
Si nous essayons de créer une nouvelle instance de la classe de calculatrice en utilisant le constructeur par défaut. Cela ne fonctionnera pas parce que le constructeur de la classe de calculatrice est privé, ce qui empêche la création de nouvelles instances en dehors de la classe.
Pour démontrer que j'ai créé une nouvelle instance de la classe de calculatrice en utilisant la propriété d'instance de la classe et dans la sortie, il y aura une erreur qui indique que cette classe est inaccessible en raison de son niveau de protection:
En démontrant que de nouvelles instances sont rejetées par le modèle singleton en C #, cet exemple montre comment le modèle singleton garantit qu'une seule instance de classe est créée et maintenue tout au long du programme.
Conclusion
Le modèle singleton est souvent utilisé dans des situations où un seul objet doit coordonner les actions à travers le système, comme un service de journalisation ou une connexion de base de données. Le modèle est implémenté à l'aide d'un constructeur privé et d'une propriété statique qui renvoie une seule instance de la classe, cet article donne une explication détaillée sur ce modèle.