SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
Introduction aux design patterns
Introduction aux design patterns
Clément Simon
28 mars 2015
Introduction aux design patterns
Sommaire
Les origines
Le singleton
Introduction aux design patterns
Origines
Qu’est-ce que c’est ?
"Ce sont des modèles théoriques adaptables qui résolvent un
problème précis."
Un schéma de conception nomme, décrit, explique et permet
d’évaluer une conception d’un système extensible et réutilisable
digne d’intérêt pour un problème récurrent.
Introduction aux design patterns
Origines
Gang Of Four
Erich Gamma (JUnit , Eclipse)
Richard Helm (POO)
John Vlissides (John Vlissides Award)
Ralph Johnson (Smalltalk)
Introduction aux design patterns
Origines
Gang Of Four
Gang Of Four - Histoire
Thèse d’Erich Gamma sur les modèles début 1991
+ Richard Helm dans l’année
+ John Vlissides juste après
+ Ralph Johnson en 92
⇒ En 93 : sorti du 1er catalogue.
⇒ Très longue gestation : "Ce livre a vu 4 pays, 3 mariages de ses
auteurs, et la naissance de 2 enfants." Sortie en 1995.
Introduction aux design patterns
Origines
Les différents types
Creational Patterns (Singleton, Abstract Factory, ...)
Structural Patterns (Adapter, Decorateur, ...)
Behavioral Patterns (Command, State, ...)
Introduction aux design patterns
Le singleton : un cas simple...
Le plus simple design pattern mais aussi le plus controversé.
Avant C++11 :
Introduction aux design patterns
Le singleton : un cas simple...
Après C++11 :
Introduction aux design patterns
Le singleton : un cas simple...
Sans templates
class A{
public:
static A& getInstance ();
};
A& A :: getInstance (){
static A instance;
return instance ;
}
// Appel :
A& sin=A:: getInstance ();
Introduction aux design patterns
Le singleton : un cas simple...
Avec templates
template <class T> class Singleton{
public:
static T& getInstance ();
};
class A : public Singleton <A >{};
Introduction aux design patterns
Le singleton : un cas simple...
Avec templates
template <class T> T& Singleton <T>:: getInstance (){
static T instance;
return instance ;
}
// Appel :
A& sin=Singleton <A>:: getInstance ();
Introduction aux design patterns
Le singleton : sujet à débat !
Singleton VS Variable Globale
"Le singleton est une variable globale"
"Le singleton est une variable globale déguisé"
"Le singleton introduit un état global, ce qui rend les variables
globales non populaire"
"Pourquoi l’état global est-il si mauvais ? -> Il rend le
programme impredictible."
Introduction aux design patterns
Le singleton : sujet à débat !
Singleton VS Variable Globale
Introduction aux design patterns
Conclusion
Heureusement que le GoF à écrit ce livre !
Les design patterns permettent de ne pas réinventer 100 fois un
même fonctionnement -> Réutilisabilité .
Le Singleton est plus fiable qu’une variable globale.
Introduction aux design patterns
Sources
Merci pour votre attention.
Sources :
Design Patterns - Elements of Reusable Object-Oriented
Software (Gang Of Four)
Cours d’Ingénierie logicielle[FMIN107] de C.Dony.
Présentation des principaux design patterns en C++
(http ://come-david.developpez.com/tutoriels/dps/)
Singletons en C++ (http ://h-deb.clg.qc.ca/Sujets/Divers–
cplusplus/CPP–Singletons.html)

Mais conteúdo relacionado

Destaque

Swift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleSwift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleDamien GOSSET
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en JavaOussama BEN KHIROUN
 
Visitor Pattern
Visitor PatternVisitor Pattern
Visitor PatternIder Zheng
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introductionneuros
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOSLilia Sfaxi
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesLilia Sfaxi
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications AndroidLilia Sfaxi
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileLilia Sfaxi
 
Design Patterns (2003)
Design Patterns (2003)Design Patterns (2003)
Design Patterns (2003)Pascal Roques
 
Libres propos fédéralistes
Libres propos fédéralistesLibres propos fédéralistes
Libres propos fédéralistesABARNOU
 
Eras geologicas
Eras geologicasEras geologicas
Eras geologicaskdtorres
 
Sacs pour ordinateurs
Sacs pour ordinateursSacs pour ordinateurs
Sacs pour ordinateursBagee.fr
 
Documentation 60 momes13-fr
Documentation 60 momes13-frDocumentation 60 momes13-fr
Documentation 60 momes13-frEntre Nous
 

Destaque (20)

Design pattern
Design patternDesign pattern
Design pattern
 
Swift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleSwift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'Apple
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Visitor Pattern
Visitor PatternVisitor Pattern
Visitor Pattern
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOS
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
 
Design Patterns (2003)
Design Patterns (2003)Design Patterns (2003)
Design Patterns (2003)
 
Jcom02.ppt
Jcom02.pptJcom02.ppt
Jcom02.ppt
 
Libres propos fédéralistes
Libres propos fédéralistesLibres propos fédéralistes
Libres propos fédéralistes
 
Cuidemos el mar
Cuidemos el marCuidemos el mar
Cuidemos el mar
 
Eras geologicas
Eras geologicasEras geologicas
Eras geologicas
 
Sacs pour ordinateurs
Sacs pour ordinateursSacs pour ordinateurs
Sacs pour ordinateurs
 
Interview de m. bernard do
Interview de m. bernard doInterview de m. bernard do
Interview de m. bernard do
 
Demetria
DemetriaDemetria
Demetria
 
Documentation 60 momes13-fr
Documentation 60 momes13-frDocumentation 60 momes13-fr
Documentation 60 momes13-fr
 

Introduction aux design patterns

  • 1. Introduction aux design patterns Introduction aux design patterns Clément Simon 28 mars 2015
  • 2. Introduction aux design patterns Sommaire Les origines Le singleton
  • 3. Introduction aux design patterns Origines Qu’est-ce que c’est ? "Ce sont des modèles théoriques adaptables qui résolvent un problème précis." Un schéma de conception nomme, décrit, explique et permet d’évaluer une conception d’un système extensible et réutilisable digne d’intérêt pour un problème récurrent.
  • 4. Introduction aux design patterns Origines Gang Of Four Erich Gamma (JUnit , Eclipse) Richard Helm (POO) John Vlissides (John Vlissides Award) Ralph Johnson (Smalltalk)
  • 5. Introduction aux design patterns Origines Gang Of Four Gang Of Four - Histoire Thèse d’Erich Gamma sur les modèles début 1991 + Richard Helm dans l’année + John Vlissides juste après + Ralph Johnson en 92 ⇒ En 93 : sorti du 1er catalogue. ⇒ Très longue gestation : "Ce livre a vu 4 pays, 3 mariages de ses auteurs, et la naissance de 2 enfants." Sortie en 1995.
  • 6. Introduction aux design patterns Origines Les différents types Creational Patterns (Singleton, Abstract Factory, ...) Structural Patterns (Adapter, Decorateur, ...) Behavioral Patterns (Command, State, ...)
  • 7. Introduction aux design patterns Le singleton : un cas simple... Le plus simple design pattern mais aussi le plus controversé. Avant C++11 :
  • 8. Introduction aux design patterns Le singleton : un cas simple... Après C++11 :
  • 9. Introduction aux design patterns Le singleton : un cas simple... Sans templates class A{ public: static A& getInstance (); }; A& A :: getInstance (){ static A instance; return instance ; } // Appel : A& sin=A:: getInstance ();
  • 10. Introduction aux design patterns Le singleton : un cas simple... Avec templates template <class T> class Singleton{ public: static T& getInstance (); }; class A : public Singleton <A >{};
  • 11. Introduction aux design patterns Le singleton : un cas simple... Avec templates template <class T> T& Singleton <T>:: getInstance (){ static T instance; return instance ; } // Appel : A& sin=Singleton <A>:: getInstance ();
  • 12. Introduction aux design patterns Le singleton : sujet à débat ! Singleton VS Variable Globale "Le singleton est une variable globale" "Le singleton est une variable globale déguisé" "Le singleton introduit un état global, ce qui rend les variables globales non populaire" "Pourquoi l’état global est-il si mauvais ? -> Il rend le programme impredictible."
  • 13. Introduction aux design patterns Le singleton : sujet à débat ! Singleton VS Variable Globale
  • 14. Introduction aux design patterns Conclusion Heureusement que le GoF à écrit ce livre ! Les design patterns permettent de ne pas réinventer 100 fois un même fonctionnement -> Réutilisabilité . Le Singleton est plus fiable qu’une variable globale.
  • 15. Introduction aux design patterns Sources Merci pour votre attention. Sources : Design Patterns - Elements of Reusable Object-Oriented Software (Gang Of Four) Cours d’Ingénierie logicielle[FMIN107] de C.Dony. Présentation des principaux design patterns en C++ (http ://come-david.developpez.com/tutoriels/dps/) Singletons en C++ (http ://h-deb.clg.qc.ca/Sujets/Divers– cplusplus/CPP–Singletons.html)