Fabrique Abstraite

( Abstract Factory )

separator line

package précédent white background package suivant

Rational Rose picture

Description

Lorsque différentes familles d'objets apparentés doivent être représentées tout en masquant leurs différences aux clients, ce patron propose la définition d'une interface abstraite centralisée de création d'un ensemble d'objets qui peut être spécialisée.

Structure et constituants


Design Patterns picture

  • Factory définit l'interface abstraite de création d'une famille d'objets,
  • Factory1 et Factory2 réalisent la création des objets en encapsulant le choix des classes concrètes,
  • ProductA et ProductB définissent les interfaces de manipulation des objets à manipuler dans une famille,
  • ProductA1, ProductA2,ProductB1 et ProductB2 définissent les comportements concrets des objets,
  • FactoryClient crée les objets d'une famille et les manipule au travers de leur interface abstraite.

Collaborations


  • une fabrique délègue à ses sous-classes la création effective des objets d'une famille,
  • le client n'accède aux objets ainsi créés que par leur interface abstraite,
  • les objets d'une même famille peuvent coopérer directement entre eux si nécessaire.

Forces et faiblesses


Design Patterns picture    le maintien de la cohérence entre objets est favorisé,

Design Patterns picture    la substitution d'une classe concrète par une autre est facilitée et reste masquée pour le client,

Design Patterns picture    si la coopération directe entre les objets concrets est nécessaire, ces objets sont rendus moins réutilisables et interchangeables.

Utilisation dans CBR*Tools


Les objets nécessaires au raisonnement (phase de raisonnement, cas cible, objets sauvegardant l'état du raisonnement, etc.) représentent une famille dont la cohérence doit être assurée. C'est pourquoi, une fabrique abstraite (classe ReasonerFactory) est utilisée pour réunir les opérations de création de ces objets. Cette fabrique est spécialisée (classe TimeExtendedReasonerFactory) de manière à déclarer les opérations de création d'objets spécifiques pour l'indexation par situations comportementales.;




Separator line


Valid XHTML 1.0!

Valid CSS!

Comments

Last modified: Wed Aug 1 15:45:32 MEST 2001