Prototype

( Prototype )

separator line

package précédent white background package suivant

Rational Rose picture

Description


Lorsque l'on désire créer un objet à partir d'un objet existant, ce patron propose la définition d'une méthode de clonage qui masque au client les opérations effectives de duplication.

Structure et constituants


Design Patterns picture

  • Prototype définit l'interface de l'opération de clonage avec si besoin une implantation par défaut,
  • Prototype1 et Prototype2 implantent l'opération de clonage appropriée,
  • PrototypeClient crée de nouveaux objets en demandant à un objet primaire de se cloner.

Collaborations


  • un client demande à un objet de se cloner,
  • l'opération de clonage est déléguée aux sous-classes.

Forces et faiblesses


Design Patterns picture    encapsule la création d'un objet et le client n'a pas de connaissance explicite sur la classe de cet objet,

Design Patterns picture    permet la définition dynamique de classes d'objets plutôt qu'une définition statique faite à la compilation,

Design Patterns picture    permet de constituer des objets qui ne diffèrent que par des modifications faites incrémentalement,

Design Patterns picture    l'implantation d'une opération de clonage peut être difficile s'il existe des composants qui ne peuvent être clonés (opération de clonage non préalablement définie) ou s'il y a des références circulaires,

Design Patterns picture    la profondeur du clonage des composants à effectuer peut dépendre du contexte d'utilisation.

Utilisation dans CBR*Tools


Ce patron est utilisé pour la constitution par clonage d'une bibliothèque de mesures de similarité, pour la copie de vecteurs de poids et pour la configuration du parcours des index. Pour réaliser ces clonages, tous les objets accessibles depuis une similarité implantent eux-mêmes une opération de clonage. Cette opération retourne un nouvel objet identique à l'objet primaire ou le même objet, si celui-ci est non modifiable (il sera donc partagé par tous les clones).

Separator line


Valid XHTML 1.0!

Valid CSS!

Comments

Last modified: Wed Aug 1 16:31:04 MEST 2001