PATTERN
SINGLETON
EQUIPE
Abou M. Fadel GUIRO ABDOULAYE FALL IBRAHIMA GNING
Member of GOT Member of GOT Member of GOT
PLAN
1
Introduction
Face aux manques d’expériences ou de méthodes de conception de logiciel, de
nombreux problèmes se posent comme l’efficacité du code, l’ergonomie et la
réutilisabilité.
Les design patterns vont apporter des solutions liés aux problèmes précités.
2
Design Pattern
I.1 Définition
Lorsqu’une question revient encore et encore dans différents projets,
Quelqu’un se décide finalement à détailler la solution et à lui donner un nom.
Ce sont des solutions classiques à des problèmes connus en conception orientée
objet.
SOLUTION
DESIGN
PROBLÉME
PATTERN
CONTEXTE
3
Design Pattern
I.2 Les différentes type de design pattern
PATTERN
PATTERN PATTERN
COMPORTEMEN
CREATION STRUCTURE
T
4
Design Pattern
I.3 Les design patterns de création
Factory Singleton Abstract Factory
Builder Prototype
5
Le Singleton
II.1 Intention
Assure qu’une classe aura une seule instance, fournit un accès global à cette instance.
6
Le Singleton
II.1 Applicabilité
Utilisez le pattern singleton quand:
Il doit exister exactement une unique instance de cette classe, et il doit être accessible
aux clients à partir d’un point d’accès bien connu.
l’unique instance devrait être extensible par héritage, et que les utilisateurs devront
être en mesure d’utiliser une instance étendue sans modifier leur code.
7
Le Singleton
II. 3 Problématique
Comment garantir l’unicité d’une instance pour une classe
Et fournir un point d’accès global à cette instance.
8
Le Singleton
II. 4 Solution
Rendre le constructeur par défaut privé afin d’empêcher les autres objets d’utiliser
l’opérateur new avec la classe du singleton.
Mettre en place une méthode de création statique qui se comporte comme un
constructeur. En sous-main, cette méthode appelle le constructeur privé pour créer un
objet et le sauvegarde dans un attribut statique. Tous les appels ultérieurs à cette
méthode retournent l’objet en cache.
9
Le Singleton
II. 4 Structure
Singleton
-uniqueInstance: Singleton
-Singleton()
+getInstance(): Singleton
10
Le Singleton
II. 5 Implémentation en JAVA
public class Singleton {
private volatile static Singleton uniqueInstance; // protected from external access
static private Singleton() {
//Code du constructeur
}
public static synchronized Singleton getInstance() {
// public method, call out by code
if (uniqueInstance == null) {
// si une instance n’existe pas encore, on la crée
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}
11
Le Singleton
II. 6 Participants
Singleton
définit une opération Instance qui permet aux clients d’accéder à son instance unique.
Peut être responsable de la création de son unique instance.
12
Le Singleton
II. 7 Collaborations
Les utilisateurs accèdent à l’instance de la classe à travers l’opération
d’instanciation.
13
Le Singleton
II. 8 Utilisation connues
Accès à l’interface matérielle
logger
Fichier de configuration
Cache
14
Le Singleton
II. 9 Relation avec les autres patterns
15
Le Singleton
II. 10 Avantages vs Inconvénients
X
• 42 206 181
• 219 10 114
Non
Non respect
respect du
du principe
principe de
de responsabilité
responsabilité unique
unique
Garantir
Garantir l’unicité
l’unicité de
de l’instance
l’instance de
de la
la classe
classe
Test
Test unitaires
unitaires du
du code
code client
client difficiles
difficiles
Obtention
Obtention d’un
d’un point
point accès
accès global
global
Obligation
Obligation de
de bénéficier
bénéficier d’un
d’un traitement
traitement spécial
spécial
Implémentation
Implémentation simple
simple
pour
pour fonctionner
fonctionner dans
dans son
son environnement
environnement
Réduction
Réduction de
de l’utilisation
l’utilisation de
de la
la mémoire
mémoire
Utilisation
Utilisation non
non justifiée
justifiée
16
REFERENCES
REFACTORING
GURU
17
Conclusion
Le singleton est un pattern indispensable pour la gestion de ressource partagée dans la
conception logicielle, certains patterns de création peuvent être implémenter en utilisant
le pattern singleton. Pour une implémentation efficace nous devons faire recours aux
threads car à défaut de ce dernier des incohérences du système peuvent se produire.
18
Merci de votre aimable attention