English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Java

Contrôle de flux Java

Java Tableau

Java Programmation orientée objet (I)

Java Programmation orientée objet (II)

Java Programmation orientée objet (III)

Gestion des exceptions Java

Java Liste (List)

Java Queue (file d'attente)

Java Map

Java Set

Java Entrée/Sortie (I/O)

Java Reader/Writer

Autres sujets Java

Modèle Singleton Java

Dans ce tutoriel, nous allons apprendre à l'aide d'exemples le patron de conception Singleton et comment l'appliquer en Java.

Singleton (unique) est un patron de conception, et non une fonction exclusive de Java. Il assure la création d'une seule instance de la classe.

Les patrons de conception sont comme notre bibliothèque de codes, qui contient diverses techniques de codage partagées par des programmeurs du monde entier.

Modèle Singleton Java

Voici comment on utilise le Singleton en Java.

  • Créer un constructeur privé qui limite la création d'objets en dehors de la classe

  • Créer une propriété privée pour référencer l'objet Singleton

  • Créer une méthode public static qui nous permet de créer et d'accéder à l'objet que nous créons. Dans la méthode, nous créerons une condition pour limiter la création de multiples objets.

C'est une instance.

class SingletonExample {
    //Référence au champ privé de l'objet
   private static SingletonExample singleObject;
   private SingletonExample() {
       //Constructeur de la classe SingletonExample
   }
   public static SingletonExample getInstance() {
        //Écrire un code qui nous permet de créer une seule instance d'objet
        //Accéder à l'objet selon les besoins
   }
}

Dans les exemples ci-dessus,

  • private static SingletonExample singleObject - Référence à l'objet de la classe

  • private SingletonExample() - Constructeur privé, utilisé pour limiter la création d'objets en dehors de la classe.

  • public static SingletonExample getInstance() - Cette méthode retourne une référence à l'objet unique de la classe. Comme cette méthode est statique, elle peut être accédée par le nom de la classe.

Utiliser la classe Singleton

Il est possible d'utiliser le Singleton lors de l'utilisation de la base 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,

class Database {
   private static Database dbObject;
   private Database() {      
   }
   public static Database getInstance() {
      //Créer l'objet (si ce n'est pas encore fait)
      if(dbObject == null) {
         dbObject = new Database();
      }
       //Retourne l'objet Singleton
       return dbObject;
   }
   public void getConnection() {
       System.out.println("Maintenant, la connexion à la base de données est établie.");
   }
}
class Main {
   public static void main(String[] args) {
      Database db1;
      //Objet unique de référence de la base de données
      db1= Database.getInstance();
      
      db1.getConnection();
   }
}

When we run the program, the output will be:

Now we have connected to the database.

In the above example,

  • We have created a singleton class Database.

  • dbObject is a class type field. This will refer to the object of the class Database.

  • The private constructor Database() prevents the creation of objects outside the class.

  • The static class type method getInstance() returns the instance of the class to the outside.

  • In the Main class, we have a class type variable db1We are using db1Call getInstance() to get the unique Database object.

  • The getConnection() method can only be used to access Database with the object.

  • Since Database can only have one object, all clients can access the database through a single connection.

It should be noted that only a few cases (such as logging) make a singleton meaningful. Even database connections should not usually be singletons.

If you are not sure whether to use a singleton, we recommend that you avoid using a singleton completely.