0% ont trouvé ce document utile (0 vote)
65 vues2 pages

Singleton

Le document présente le design pattern Singleton, qui garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global à celle-ci. Il décrit la structure typique d'une classe Singleton, incluant un constructeur privé et une instance statique, ainsi que des exemples d'application dans des contextes variés tels que des jeux et des systèmes de gestion de prix. Le Singleton est particulièrement adapté aux classes sans état, permettant une conception flexible et extensible.

Transféré par

OMAR SGHIR
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
65 vues2 pages

Singleton

Le document présente le design pattern Singleton, qui garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global à celle-ci. Il décrit la structure typique d'une classe Singleton, incluant un constructeur privé et une instance statique, ainsi que des exemples d'application dans des contextes variés tels que des jeux et des systèmes de gestion de prix. Le Singleton est particulièrement adapté aux classes sans état, permettant une conception flexible et extensible.

Transféré par

OMAR SGHIR
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Lille – Sciences et Technologies – Licence 3 Informatique

UE Conception Orientée Objet

Design Pattern : singleton


Intent
Ensure a class only has one instance, and provide a global point of access to it.

Structure

Eléments caractéristiques
• constructeur privé
• une instance static final soit public soit private mais alors accessible par une méthode public static

public class SingletonClass {


private SingletonClass () { }
private static f i n a l SingletonClass UNIQUE INSTANCE = new SingletonClass ( ) ;
public static SingletonClass getTheInstance () {
return UNIQUE INSTANCE;
}
}

ou
public class SingletonClass {
private SingletonClass () { }
public static f i n a l SingletonClass SINGLETON = new SingletonClass ( ) ;
}

Remarque : ce design pattern peut toujours s’appliquer pour les classes « sans état » (pas d’attribut).

Exemples rencontrés
TD – Casse-briques : le joueur « Dans cette version du jeu il n’y a nécessairement qu’un seul joueur. Une seule
instance de la classe Player est donc nécessaire. Comme prendre en compte cela dans la conception de cette classe ? »

Player
- nbBalls : int
- paddle : Paddle
- nbPoints : int
+ INSTANCE : Player
- Player()
+ addPoints( points : int )
+ changeNbBalls( diff : int)
+ changePaddleSize ( scale : float)
TD – Expressions : gestion des opérateurs Chaque opérateur peut être représenté par une classe singleton. Par
rapport à un type énuméré, cela offre la possibilité d’ajouter de nouveaux opérateurs (modulo par exemple) : respect
du principe ouvert-fermé.

TD – Parc d’attractions Parmi les stratégies de gestion de la politique de prix et des contraintes d’accès à une
attraction. La mise en place d’un « prix gratuit » ou de l’absence de restriction d’accès correspond à des classes « sans
état » qui peuvent donc être mises en œuvre par des singletons :

public class NoFeePolicy extends FixedPrice {


public static f i n a l NoFeePolicy SINGLETON = new NoFeePolicy ( ) ;
private NoFeePolicy () {
super (0);
}
}

public class OpenAccess implements AccessStrategy {


private static f i n a l String FREE ACCESS FOR EVERYONE = "free access for everyone" ;
public static f i n a l OpenAccess SINGLETON = new OpenAccess ( ) ;
private OpenAccess() {}

public boolean accessGranted (Person person ) {


return true ;
}
public String description () {
return FREE ACCESS FOR EVERYONE;
}
}

Vous aimerez peut-être aussi