Les singletons en Java
Singleton est un modèle de conception (Design pattern) plutôt qu'une fonctionnalité spécifique à Java. Cela garantit qu'une seule instance d'une classe est créée.
Un modèle de conception est comme une bibliothèque de code qui inclut diverses techniques de codage partagées par les programmeurs du monde entier.
Voici comment utiliser des singletons en Java.
- Créer un constructeur privé (private) qui limite la création d'un objet en dehors de la classe
- Créer un attribut private static qui fait référence à l'objet singleton.
- créer une méthode public static qui nous permet de créer et d'accéder à l'objet que nous avons créé. Dans la méthode, nous allons créer une condition qui nous empêche de créer plus d'un objet.
Exemple 1 :
class Singleton { // attribut privé qui fait référence à l'objet private static Singleton objet; // constructeur de la classe Singleton private Singleton() { // corps } public static Singleton getInstance() { // écrire du code qui nous permet de créer un seul objet, // accéder à l'objet selon nos besoins // créer un objet s'il n'est pas déjà créé if (objet == null) { objet = new Singleton(); } // renvoie l'objet singleton return objet; } } public class Test { public static void main(String args[]) { Singleton s1 = Singleton.getInstance(); } }
Singletons peuvent être utilisés lorsque vous travaillez avec des bases de données. Ils peuvent être utilisés pour créer un pool de connexions pour accéder à la base de données tout en réutilisant la même connexion pour tous les clients. Par exemple,
Exemple 2 :
class Database { private static Database objet; private Database() { } public static Database getInstance() { // créer un objet s'il n'est pas déjà créé if (objet == null) { objet = new Database(); System.out.println("un objet Database est crée"); } else { System.out.println("un objet Database est déja instancié"); } // renvoie l'objet singleton return objet; } public void getConnection() { System.out.println("Vous êtes maintenant connecté à la base de données."); } } public class Test { public static void main(String args[]) { Database d1 = Database.getInstance(); Database d2 = Database.getInstance(); Database d3 = Database.getInstance(); d3.getConnection(); } }
un objet Database est crée
un objet Database est déja instancié
un objet Database est déja instancié
Vous êtes maintenant connecté à la base de données.
un objet Database est déja instancié
un objet Database est déja instancié
Vous êtes maintenant connecté à la base de données.
Remarque ! Il est important de noter qu'il n'y a que quelques scénarios (comme la journalisation) où les singletons ont un sens. Même une connexion à une base de données ne devrait généralement pas être un singleton.
Les singletons ne sont rien de plus qu'un état global. L'état global permet à vos objets de récupérer secrètement des éléments non déclarés dans leurs API
Les singletons ne sont rien de plus qu'un état global. L'état global permet à vos objets de récupérer secrètement des éléments non déclarés dans leurs API
Partager ce cours avec tes amis :
Rédigé par
ESSADDOUKI
Mostafa