Modèles de conception réutilisables
      (Design Patterns)
    Les modèles de conception répondent à des problèmes récurents en
    programmation objet, sous la forme de micro-architectures. Les
    principaux sont décrits dans l'ouvrage de référence :
    
      - E. Gamma, R. Helm, R. Johnson et J. Vlissides, "Design
        Patterns. Catalogue de modèles de conception réutilisables",
        Vuibert, 1999
 
    
    On trouvera dans cette page la liste des modèles vus en cours ainsi
    que quelques schémas UML
    Itérateur
    
      - Intention : fournit un
          moyen d'accès séquentiel aux éléments d'un agrégat d'objets,
          sans mettre à découvert la représentation interne de celui-ci.
 
      - Implémentation dans l'API Java : 
java.util.Iterator
       
    
    
    Adaptateur
    
      - Intention : convertit
          l’interface d’une classe en une autre conforme à l’attente du
          client. L’Adaptateur permet à des classes de collaborer, qui
          n’auraient pu le faire du fait d’interfaces
          incompatibles. 
 
      - Il existe deux formes d'adaptateurs : les adaptateurs d'objets
        et les adaptateurs de classes. Les premiers utilisent la
        délégation, les seconds l'héritage.
 
    
    
    Décorateur
    
      - Intention : attache
          dynamiquement des responsabilités supplémentaires à un objet. Les décorateurs fournissent
          une alternative souple à la dérivation, pour étendre
          les fonctionnalités.
 
    
    
    Façade
    
      - Intention : fournit une
          interface unifiée, à l'ensemble des interfaces d'un
          sous-système. La façade fournit une interface de plus haut
          niveau, qui rend le sous-système plus facile à utiliser. 
         
    
    Observateur/Observable
    
      - Intention : définit une
          interdépendance de type un à plusieurs, de façon telle que,
          quand un objet change d'état, tous ceux qui en dépendent en
          soient notifiés et automatiquement mis à jour.
 
      - Implémentation dans l'API Java : 
java.util.Observer et java.util.Observable