Classe Java Singleton
Classe Java Singleton
Dans ce tutoriel, nous allons apprendre à implémenter Singleton Design Pattern en Java à l'aide d'exemples.
En Java, Singleton est un modèle de conception qui garantit qu'une classe ne peut avoir qu'un seul objet.
Pour créer une classe singleton, une classe doit implémenter les propriétés suivantes :
- Créer un
private
constructeur de la classe pour restreindre la création d'objets en dehors de la classe. - Créer un
private
attribut du type de classe qui fait référence à l'objet unique. - Créer un
public static
méthode 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 :syntaxe de classe Java Singleton
class SingletonExample {
// private field that refers to the object
private static SingletonExample singleObject;
private SingletonExample() {
// constructor of the SingletonExample class
}
public static SingletonExample getInstance() {
// write code that allows us to create only one object
// access the object as per our need
}
}
Dans l'exemple ci-dessus,
private static SingletonExample singleObject
- une référence à l'objet de la classe.private SingletonExample()
- un constructeur privé qui limite la création d'objets en dehors de la classe.public static SingletonExample getInstance()
- cette méthode renvoie la référence au seul objet de la classe. Puisque la méthode static , on peut y accéder en utilisant le nom de la classe.
Utilisation de Singleton en Java
Les singletons peuvent être utilisés lorsque vous travaillez avec des bases de données. Ils permettent de créer un pool de connexion pour accéder à la base de données tout en réutilisant la même connexion pour tous les clients. Par exemple,
class Database {
private static Database dbObject;
private Database() {
}
public static Database getInstance() {
// create object if it's not already created
if(dbObject == null) {
dbObject = new Database();
}
// returns the singleton object
return dbObject;
}
public void getConnection() {
System.out.println("You are now connected to the database.");
}
}
class Main {
public static void main(String[] args) {
Database db1;
// refers to the only object of Database
db1= Database.getInstance();
db1.getConnection();
}
}
Lorsque nous exécutons le programme, la sortie sera :
You are now connected to the database.
Dans notre exemple ci-dessus,
- Nous avons créé une classe singleton Base de données .
- Le dbObject est un champ de type classe. Cela fera référence à l'objet de la classe Database .
- Le constructeur privé
Database()
empêche la création d'objets en dehors de la classe. - La méthode de type de classe statique
getInstance()
renvoie l'instance de la classe au monde extérieur. - Dans le Principal classe, nous avons la variable de type classe db1 . Nous appelons
getInstance()
en utilisant db1 pour obtenir le seul objet de la Database . - La méthode
getConnection()
accessible uniquement à l'aide de l'objet de la Base de données . - Depuis la base de données ne peut avoir qu'un seul objet, tous les clients peuvent accéder à la base de données via une seule connexion.
Singleton est un modèle de conception plutôt qu'une fonctionnalité spécifique à Java. Un modèle de conception est comme notre bibliothèque de codes qui comprend diverses techniques de codage partagées par les programmeurs du monde entier.
Il est important de noter qu'il n'y a que quelques scénarios (comme la journalisation) où les singletons ont du sens. Nous vous recommandons d'éviter complètement d'utiliser des singletons si vous n'êtes pas sûr de les utiliser ou non. En savoir plus :Qu'est-ce qui est si mauvais à propos de Singleton ?
Java