Les auteurs de patterns doivent définir le corps des patterns qu'ils crée en choisissant un type UML (Unified Modeling Language). Les types acceptables sont collaboration, classe et package. La plupart des patterns créés sont du type collaboration, car il s'agit du type le plus souple en termes de conception et d'application.
Conformément aux règles UML 2.0, le type d'un pattern détermine les types d'éléments cible autorisés dans l'application de ce pattern. Par exemple, vous pouvez appliquer un pattern de type package à un package UML ou à un modèle UML (un modèle est un type de package). Les packages peuvent être propriétaires d'autres packages. En revanche, vous ne pouvez pas appliquer un pattern de type package à une classe UML, car une classe ne peut pas être propriétaire d'un package.
La liste suivante indique les types de cibles autorisés en fonction du type de pattern :
Lors de la conception d'un pattern, son auteur peut limiter les types de cibles autorisés en désélectionnant les options appropriées dans l'assistant Nouveau pattern. Par exemple, pour un pattern de type collaboration, les cibles par défaut peuvent être limitées aux classes.
L'application d'un pattern s'effectue suivant deux comportements possibles : soit une instance du pattern est ajoutée à l'élément cible en tant que noeud enfant, soit l'élément cible est modifié pour devenir l'instance du pattern. Le comportement dépend à la fois des choix de conception de l'auteur du pattern et du type UML 2.0 de l'élément cible.
Le tableau suivant indique le comportement adopté par défaut lors de l'application d'un pattern, suivant le type de ce dernier.
Type de pattern | ||||
---|---|---|---|---|
Type package | Type collaboration | Type classe | ||
Elément cible dans le modèle UML 2.0 |
Cible de type package | Ajoute une instance de pattern de type package à la cible. | Ajoute une instance de pattern de type collaboration à la cible. | Ajoute une instance de pattern de type classe à la cible. |
Cible de type collaboration | Non autorisé. | Change la collaboration cible en une instance de pattern de type collaboration et ajoute les paramètres du pattern à cette instance. | Non autorisé. | |
Cible de type classe | Non autorisé. | Ajoute une instance de pattern de type collaboration à la cible. | Modifie la classe cible en y ajoutant un stéréotype de pattern. Aucun des paramètres du pattern n'est ajouté. |