Um uso comum para colaborações é modelar padrões de projeto. Um padrão modela um comportamento comum que requer um conjunto padrão de interações entre um conjunto de objetos que se encaixam com as funções definidas pelo padrão. Por exemplo, o padrão de design “Composite” define um modo para organizar objetos de complexidade variável, de modo que eles podem ser utilizados da mesma forma, independentemente da sua complexidade. A colaboração é modelada como um oval tracejado, com o nome da colaboração dentro.

A figura abaixo mostra o Composite (para o padrão de design) modelado como uma colaboração:

Padrão para modelagem de colaboração

A colaboração não especifica classes particulares, mas define os papéis que as classes possuem, a fim de alcançar o objetivo da colaboração.

Um papel, formalmente chamado de “ClassifierRole”, define o conjunto de características que um classificador tem que possuir a fim de cumprir uma responsabilidade particular na colaboração.

Isso é muito parecido com definir as posições dos jogadores em um time de futebol. Podemos definir os papéis dos atacantes, da defesa e do goleiro, sem saber que quaisquer pessoas específicas poderão desempenhar essas funções.

O ClassifierRole também pode definir valores de atributos e comportamentos que uma instância deve possuir para desempenhar o papel. Por exemplo, um goleiro deve ser capaz de saltar determinada distância e atender a critérios específicos de altura. Veja outro exemplo.

Copyright © 2014 AIEC.