Itérateur

( Iterator )

separator line

package précédent white background package suivant

Rational Rose picture

Description


Lorsque l'on désire masquer au client la mécanique de parcours d'un agrégat, ce patron permet l'encapsulation de l'itération dans une hiérarchie de classe, soit pour des itérations polymorphes, soit pour offrir différents types de parcours pour un même type d'agrégat.

Structure et constituants


Design Patterns picture

  • Iterator définit l'interface d'itération,
  • Iterator1 et Iterator2 implantent deux mécaniques de parcours,
  • Aggregate définit l'interface d'un agrégat,
  • Aggregate1 et Aggregate2 implantent deux types d'agrégats concrets,
  • IteratorClient lance l'itération sur l'agrégat.

Collaborations


  • le client demande la création d'un objet d'itération à l'agrégat ou à un autre objet responsable de l'instanciation de l'itérateur,
  • le client contrôle l'itération (itérateur externe) en manipulant l'itérateur.

Forces et faiblesses


Design Patterns picture    permet de parcourir un agrégat sans connaître sa structure

interne,

Design Patterns picture    permet de parcourir de différentes manières un même agrégat,

Design Patterns picture    l'agrégat peut être obligé d'exporter des méthodes uniquement pour que les itérateurs puissent fonctionner.

Utilisation dans CBR*Tools


Le patron Itérateur est utilisé pour parcourir les enregistrements (classe Record) dans l'indexation par situations comportementales. Chaque type d'enregistrements définit un parcours par défaut adapté à sa représentation interne (propriétés des chroniques dont il est composé). De plus, les patrons de cas potentiels (classe PotentialCaseTemplate) définissent leur propre parcours d'un enregistrement suivant leurs conditions d'instanciation.

Separator line


Valid XHTML 1.0!

Valid CSS!

Comments

Last modified: Wed Aug 1 16:11:57 MEST 2001