420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1

Définition Lors de la conception ou de la programmation dune application (OO), certains problèmes darchitectures reviennent régulièrement… Les patrons de conception proposent des solutions à ces problèmes. Habituellement, suivre les patrons de conception lors du développement dune application est signe de souci du détail et est une excellent pratique. 2

Design Pattern : Faible couplage 3 Index.php UserLogic.php Méthode: getUsers() Profile.php Manage- users.php Userlist. php Couplage : Lien entre 2 éléments (classes, package, …) Si la méthode prend un nouveau paramètre, alors on doit absolument modifier toutes les classes utilisant la méthode… Cest pour cette raison que le découpage des couches est important. Si on change la base de données, alors la vue et le contrôleur ne seront pas à changer.

Design Pattern : Forte cohésion 4 Index.php Profil.php Manage- users.php Userlist. php Cohésion: Lexpertise/identité dune classe Ex: La classe ne soccupe que de la gestion du profil usager, rien dautre Avec une faible cohésion, la classe a est plus difficile à maintenir, plus difficile a réutiliser dans un autre cas/application, … Avec une parfaite cohésion, le couplage est trop grand… il faut un juste milieu. Imaginons une classe qui soccupe de valider le numéro civic dune adresse, une autre classe qui soccupe de valider la rue, … Avantage : on pourrait facilement réutiliser les classes pour dautres applications, mais le lien entre les classes serait immense. IndexAction.php ProfilAction.php UserListAction. php ManageUser Action.php

Exemple : Lazy-initialization Prenons par exemple une application utilisant une ressource lourde à initialiser. Exemple: Connexion au serveur de chat Ouverture dune connexion à la base de données Le but est dattendre le plus tard possible, car il est possible quon en ait finalement jamais besoin… Il y a le design pattern inverse qui peut être intéressant : « Immediate ». 5

Autres design patterns connus Le design pattern model-vue-contrôleur Factory Indirection … Faites attention aux Antipattern ! Code spaghetti God Object (objet divin) Gas factory (design trop complexe pour rien) 6