Le modèle Singleton est un modèle de conception commun, et son objectif principal est de s'assurer qu'une classe n'a qu'une seule instance et fournit un point d'accès global pour l'extérieur.
Dans de nombreux scénarios d'applications, certains objets n'ont besoin que d'une seule instance, tels que des objets de fichier de configuration, des objets logarithmiques, etc. Chaque fois que ces objets sont créés, les ressources sont consommées et le mode Singleton garantit qu'une seule instance est créée, et tous les accès partagent cette instance, évitant ainsi des déchets inutiles de ressources.
Le modèle Singleton présente de nombreux avantages, en particulier adaptés aux scénarios où des ressources partagées sont nécessaires.
Si vous avez plusieurs objets du même type dans votre programme qui doivent être créés, l'utilisation du modèle Singleton peut considérablement enregistrer la mémoire. Parce que le modèle Singleton ne crée qu'une seule instance d'objet et que toutes les classes partagent cette instance, il n'est pas nécessaire de créer à plusieurs reprises des objets pour chaque instance, en évitant les déchets de mémoire.
Le mode Singleton peut améliorer efficacement l'efficacité du programme. En partageant une instance, il n'est pas nécessaire de recréer des objets chaque fois que vous y accédez, ce qui peut réduire les opérations fréquentes de création et de destruction d'objets et améliorer les performances.
Voici quelques scénarios d'application typiques du mode Singleton:
Dans les applications, il est généralement nécessaire de lire le fichier de configuration et d'enregistrer les informations de configuration en mémoire. Si le fichier est relié chaque fois que le fichier de configuration est accessible, cela peut entraîner un gaspillage de ressources. À travers le mode Singleton, nous pouvons charger le fichier de configuration et conserver une instance au démarrage du programme, et utiliser l'instance directement après l'accès ultérieur.
Les connexions de la base de données sont des opérations à forte intensité de ressources. Si une nouvelle connexion de base de données est créée à chaque fois qu'une base de données est utilisée, elle est à la fois un gaspillage de ressources et affecte les performances. Utilisez le mode Singleton pour créer une connexion de base de données lorsque le programme démarre, et les opérations ultérieures réutilisent directement la connexion.
La journalisation est une caractéristique importante dans de nombreuses applications. Si un nouvel objet journal est créé chaque fois qu'un journal est enregistré, il consomme beaucoup de ressources. Le mode singleton permet de créer des objets logarithmiques au début du programme et partager cette instance dans une utilisation ultérieure.
Lors de la mise en œuvre du mode Singleton, les points clés suivants doivent être suivis:
Pour nous assurer qu'il n'y a qu'une seule instance, nous devons privatiser le constructeur afin que l'extérieur ne puisse pas créer directement l'objet. Voici un exemple de mise en œuvre simple:
Afin d'accéder à une seule instance, nous avons besoin d'un point d'accès global. Normalement, ce point d'accès est une méthode statique. Voici un exemple de code de l'implémentation:
Dans le code ci-dessus, la méthode `getInstance ()` est un point d'accès global, qui renvoie une seule instance. Si l'instance n'a pas été créée, elle crée et renvoie l'instance; Si l'instance a été créée, elle renvoie directement l'instance créée.
Bien que le mode Singleton ait de nombreux avantages, il existe des inconvénients:
Le mode Singleton fusionne les fonctions de création et d'accès des objets, ce qui viole le principe de responsabilité unique. En conséquence, les responsabilités de classe sont trop complexes, réduisant la flexibilité et la maintenabilité.
Le modèle Singleton ne peut créer qu'une seule instance, il peut donc être restreint si vous devez étendre les fonctionnalités de la classe ou répondre aux besoins spéciaux.
Le modèle Singleton crée essentiellement des variables mondiales, ce qui conduit facilement à l'abus de l'état mondial, augmentant ainsi le couplage et la complexité du code.
Le motif Singleton est un modèle de conception très efficace. En s'assurant qu'il n'y a qu'une seule instance de la classe et en fournissant un point d'accès global, il peut économiser efficacement les ressources, améliorer l'efficacité du programme et éviter la création et la destruction d'objets fréquents. Cependant, il a également quelques lacunes, telles que les violations du principe de responsabilité unique et la difficulté de mise à l'échelle. Par conséquent, lorsque vous utilisez le mode Singleton, nous devons choisir soigneusement en fonction des besoins réels.