31 0 760KB
Patrons de comportement et structuration
Patron Observateur
Probléme
une entreprise souhaite qu'une application météo affiche des informations météorologiques, la météo actuelle, etc.
Client demende : Affichage des informations métriologique Condition : Si temperature change => affichage de temperature change
Schéma de probléme
Les données
NOTRE implémentation
Première solution:
Problème sur la solution
Le Patron Observateur
Le Principe:
Une journée dans la vie de l'Observer Pattern
Une journée dans la vie de l'Observer Pattern
Une journée dans la vie de l'Observer Pattern
Une journée dans la vie de l'Observer Pattern
Une journée dans la vie de l'Observer Pattern Sujet ordre
Sujet_objet ordre: 8
$sujet_objet = new Sujet(8) $sujet_objet -> ordre = 14
Une journée dans la vie de l'Observer Pattern
Observateur en UML: Chaine youtube
Doranco AjouterABonne() SupprimerAbonne() NOtifierAbonne() Abonnes = [Rachid1 , Oumar]
Rachid consulte doranco Doranco notifie rachid
Abbonne
Rachid D = new Doranco()
OUmar D = new Doranco()
rachid1 = new Rachid() oumar2 = new Oumar() AjouterAbonne(rachid1) AjouterAbonne(oumar2)
Solution pour le problème précèdent
Régle: de conception : séparer les parties qui changent de celles qui restent les mêmes
Le Patron Stratégie
Probléme une entreprise veut une application de canard qui affiche des canards qui nagent, cancanent et volent. s'ils peuvent voler
Solution:
Probléme: le canard domestique va hérité la méthode « voler » alors que le canard domestique ne peut pas voler
Solution
Probléme: Conception “spaghetti”
Règle: on regroupe ce qui change ici , ce qui est entrain de changer c’est comportement de chaque canard
Solution : “Strategy Pattern”
Patron de stratégie:Le Strategy pattern fait partie des Behavioral patterns (patrons comportementaux) qui équipent un logiciel avec différentes méthodes de résolution. Ces stratégies sont en réalité une famille d’algorithmes séparés du programme à proprement parler et autonomes (= interchangeables). Un patron de conception Stratégie inclut également des lignes directrices et des outils pour les développeurs. Les Strategy patterns décrivent ainsi comment structurer des classes, organiser un groupe de classes et créer des objets. L’une des particularités du Strategy pattern réside dans le fait qu’il est possible de réaliser un comportement de programme et d’objet variable même pendant l’exécution d’un logiciel.
Principe:
Le patron stratégie en uml:Pour la représentation d’un patron de conception Stratégie, on choisit en général un diagramme de classes avec au moins trois composants de base : ---Context (contexte ou classe de contexte) ---Strategy (stratégie ou classe de stratégie) ---ConcreteStrategy (stratégie concrète)
Solution pour le problème précèdent
Solution pour le problème précèdent
Le Patron Composite
Probléme le restaurant a besoin d'une application qui affichera les menus
Donc…une simple solution est d’avoir une classe avec des méthodes qui affiche le menu princpale CLASSE
Appel et instancat ion
Résultat,,,
Bravo…mais le restaurant veut sousmenu aussi Et baah c’est simple
Développeur
Solution est d’ajouter une méthode comme une sous-menu et après on appelle cette méthode dans la méthode de menu principale pour un affichage globale APPEL DE SOUS-MENU
Declaration de sous-menu
Résultat
SIMPLE ET EFFICACE ET VOILAA
Réstaurent veut ajouter a chaque sous menus un sous sous menus et chaque sous sous menu un autre sous sous sous menu Et baah c’est Trop
Développeur
Question de problème : es que il y-a un moyen d’afficher toutes menu et sous-menus sans avoir beaucoup de dépecé et une suppression dynamique qui n’influence pas sur autres élément dans hiérarchie !!!!!!!!
Patron Composite
Patron composite (“défintion”)
un patron composite est un patron de conception (design pattern) structurel1. Ce patron permet de concevoir une structure arborescente, par exemple une représentation d'un dossier, ses sous-dossiers et leurs fichiers comme « arbres »
Schema sur la solution avec composite
Accés des élements
Réprésentation UML de composite
UML de la solution Menu
Dernier_sous_menu
Sous-Menu
Implémentation en Javascript(TP)
Référence: