Académique Documents
Professionnel Documents
Culture Documents
Motifs de création
Master en informatique/Master en ingénierie
Vue
d'ensem
• Singleton
ble • S'assurer qu'une classe n'a qu'une seule instance.
• Fournir un point d'accès global à celui-ci
• L'usine abstraite :
• Fournir une interface pour créer des familles d'objets connexes ou
dépendants sans spécifier leurs classes concrètes.
• Méthode d'usine :
• Définir une interface pour créer un objet, mais laisser les sous-classes décider
de la classe à instancier.
• Permet à une classe de différer son instanciation aux sous-classes.
• Prototype
• Spécifier les types d'objets à créer en utilisant une instance prototypique
• Créer de nouveaux objets en copiant ce prototype
• Constructeur :
• Séparer la construction d'un objet complexe de sa représentation afin que
le même processus de construction peut créer des représentations différentes
Usine : utiliser
"nouveau"
Le canard est un • Utiliser new pour
Interface/Abstrait
instancier une classe
concrète
Cana RubberDuck • Le code est plus fragile
rd et moins flexible
Canard DecoyDuck
colvert
Créer un ensemble de
classes
• La maintenance et les mises à jour sont plus difficiles et sujettes à des erreurs.
• Modification ou extension : nécessité de rouvrir le code
• Nouveau n'est pas mauvais puisqu'il s'agit d'un
élément fondamental de JAVA.
• Le problème est le CHANGEMENT et son impact sur l'utilisation des nouvelles
technologies.
• Rappelez-vous les principes de conception OO :
Créer un ensemble de
classes
• Identifier les aspects qui varient et les séparer de ce qui reste identique.
• La conception doit être ouverte à l'extension mais fermée à la modification.
Identifier les aspects qui
varient
if ( .ype.equa l s (''cheese,,,) ){
pi zza = new CheeseP izza() ;
}else if ( t y p e . equals ( '' g r e e kr ' ) {
pizza e nouveau GreekPizza O ;
} sinon (type .equals("'
p epperoni11
si ) {
pizza. p repare()
;
- Quand on a une Pizza, on la rrcpa "e.
pi z za . ba ke () ;
! Je sais, olI edo1 .1,h, f1.&t 0t1 la
pizza. cut()
sa e ihd add .f:hc torv-" f theest :),
; pizza. box -Hu!!n nous ba t. it, ti.,.t it ihO bo'1l 1t
O ; return
E.ath Piz.z. a s1.LbtYft (CbeesePi-z :.z :. a,
pizza ;
V e9, -1ePizz.a, !!tl--) sait '1ow to vw-era
}
e ihd.f.
Ajouter d'autres
types de pizza
Encapsuler la création
d'objets
Pizza orderPizza(String type)
{
Pizza pizza ;
Qu'est-ce Retirer le
qui se code de
passe création
ici ? d'objet
"A-P :
Elli lt k-c ru IDDL,i illlThirlCr !! $t Dnun 1w +
t8(
Ptl a ltlli'l's "H!ry
- ..,. =
Sil <.r;m.rsrf
) ii
Cillffllmo -sqP ;
Q-N.\I)
U'a.\'i'I'} -- Plu 'Tomak!Seu, ce lillariiwa.Sa!Xlii
-
V I -
-
- -
.'
-
;
"Qrfa;;m
Cl&ms
"N '
:,
Le travail ,o l h . ,Qr,t:r tt -Frwg FmsnOlams
: yi:u.a t.illbw i est W
ii<dke fiUd in¥ali... b-
lht .lt kr,,:iw5
hO'H lo t.l "c.ltl ' tll "tyil
objetb +di" B-ilffi " io-ti
Comment
aires
• Les classes d'usine abstraites sont souvent
mises en œuvre avec le modèle Factory
Method.
• Dans l'exemple, chaque méthode ressemble à une
méthode d'usine (createDough(), createsauce(), ...).
Elles sont déclarées abstraites
• Peut également être mis en œuvre en utilisant le
Prototype
modèle. Qu'est-ce qu'un prototype ? Et
Singleton ?
• Une usine de béton est souvent un Singleton.
• Normalement, une seule instance de la classe
ConcreteFactory est créée au moment de l'exécution.
Modèle
singleton
• Intention
• Assurez-vous qu'une classe n'a jamais qu'une seule instance,
et fournissez une fonction
point d'accès global à celui-ci.
• Applicabilité
• Lorsqu'il doit y avoir exactement une instance d'une
classe, et qu'elle doit être accessible à partir d'un point
d'accès connu.
• Lorsque l'instance unique doit être extensible
par sous-classification, et que les clients doivent
pouvoir utiliser une instance étendue sans
modifier leur code.
Singleton (suite)