1 / 9

Intention

Intention. Séparer et extraire les traitements appliquées à différents type de nœuds d’une structure. Motivations. Permet l’ajout de nouveaux types d’actions sur les objets de la structure sans les modifier Exemple : Système de fichier Renommage massif

kapila
Download Presentation

Intention

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Intention • Séparer et extraire les traitements appliquées à différents type de nœuds d’une structure

  2. Motivations • Permet l’ajout de nouveaux types d’actions sur les objets de la structure sans les modifier • Exemple : Système de fichier • Renommage massif • Extraction selon type (*.png,*.jpg,… -> Images)

  3. Utilisation • Structure contenant un nombre de différent types de nœud fixe • Structure sur laquelle on peut envisager d’appliquer plusieurs type de traitements • Exemple : • Système de fichiers • Compilateurs (variables, fonctions, opérateurs, …) • Liste de produits

  4. Exemple d’implémentation • Eléments : • Chambre à coucher • WC • Cuisine • Salon • … • Visiteurs : • Ménagère • Peintre • Décorateur • Voleurs

  5. Interface visiteur publicinterface Visiteur { voidvisit(Bureau p); voidvisit(ChambreACoucher p); voidvisit(SalleDeBain p); voidvisit(Sallon p); voidvisit(Terrasse p); voidvisit(Toilettes p); }

  6. Menagère publicclassMenagereimplements Visiteur {    @Overridepublicvoidvisit(Bureau p){System.out.println("Nettoie bureau");}    @Overridepublicvoidvisit(Toilettes p){System.out.println("Nettoie les toilettes");}}

  7. Voleur publicclass Voleur implements Visiteur {privateintnbObjetsVoles;publicintgetNbObjetsVoles(){returnnbObjetsVoles;}    @Overridepublicvoidvisit(Bureau p){System.out.printf("%20s --> %s\n", p.getClass().getSimpleName()," Vol l'ordinateur");nbObjetsVoles++;}    @Overridepublicvoidvisit(Toilettes p){System.out.printf("%20s --> %s\n", p.getClass().getSimpleName()," Vol la brosse");nbObjetsVoles++;}}

  8. Principal publicstaticvoid main(String[]args){intnbPieces=10;    List<Piece>pieces=newLinkedList<Piece>();    Visiteur visiteur=newMenagere();String[]typePieces={"Bureau","ChambreACoucher","SalleDeBain","Sallon","Terrasse","Toilettes"};// Generation d'une maison aléatoirefor(int i =0; i <nbPieces; i++){pieces.add(newPieceAleatoire(typePieces));}// Afficher la structure de la maisonSystem.out.println("Pieces : ");for(Piece p :pieces){System.out.println("  - "+p.getName());}System.out.println();// Action sur la maisonfor(Piece p :pieces){p.accept(visiteur);}}

More Related