Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parLemoine Lucas Modifié depuis plus de 10 années
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
6
Interface visiteur public interface Visiteur { void visit(Bureau p); void visit(ChambreACoucher p); void visit(SalleDeBain p); void visit(Sallon p); void visit(Terrasse p); void visit(Toilettes p); }
7
Menagère public class Menagere implements Visiteur { @Override public void visit(Bureau p) { System.out.println("Nettoie bureau"); } @Override public void visit(Toilettes p) { System.out.println("Nettoie les toilettes"); } }System
8
Voleur public class Voleur implements Visiteur { private int nbObjetsVoles; public int getNbObjetsVoles() { return nbObjetsVoles; } @Override public void visit(Bureau p) { System.out.printf("%20s --> %s\n", p.getClass().getSimpleName()," Vol l'ordinateur"); nbObjetsVoles++; } @Override public void visit(Toilettes p) { System.out.printf("%20s --> %s\n", p.getClass().getSimpleName()," Vol la brosse"); nbObjetsVoles++; } }System
9
Principal public static void main(String[] args) { int nbPieces = 10; List pieces = new LinkedList (); Visiteur visiteur = new Menagere(); String[] typePieces = {"Bureau", "ChambreACoucher", "SalleDeBain", "Sallon", "Terrasse", "Toilettes"}; // Generation d'une maison aléatoire for (int i = 0; i < nbPieces; i++) { pieces.add(newPieceAleatoire(typePieces)); } // Afficher la structure de la maison System.out.println("Pieces : "); for (Piece p : pieces) { System.out.println(" - " + p.getName()); } System.out.println(); // Action sur la maison for (Piece p : pieces) { p.accept(visiteur); } }String System
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.