La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Intention Séparer et extraire les traitements appliquées à différents type de nœuds d’une structure."— Transcription de la présentation:

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

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


Télécharger ppt "Intention Séparer et extraire les traitements appliquées à différents type de nœuds d’une structure."

Présentations similaires


Annonces Google