15.04.2013 Views

A Model-Driven Software Reuse Approach (in portuguese)

A Model-Driven Software Reuse Approach (in portuguese)

A Model-Driven Software Reuse Approach (in portuguese)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

130<br />

Em cada decorator implementa-se uma versão dos métodos pr<strong>in</strong>cipais, considerando-se “como”<br />

esta variante modifica o comportamento normal. O gerador apenas precisa fazer a concatenação<br />

dos decorators, de forma a reproduzir as variantes selecionadas.<br />

Figura 19: Uso do padrão Decorator para or features<br />

A Figura 19 ilustra o uso do padrão Decorator para implementar or features. Para<br />

cada ponto de variação, no caso featureA, cria-se uma classe abstrata que contém métodos<br />

específicos desta feature (metodo1() e metodo2()). Cria-se também um decorator abstrato, com<br />

um construtor responsável por <strong>in</strong>cluir o comportamento deste decorator a outro. Para cada<br />

variante (no caso, featureA soz<strong>in</strong>ha, e as sub-features A1, A2 e A3), cria-se uma <strong>in</strong>stância<br />

da classe abstrata pr<strong>in</strong>cipal (FeatureASoz<strong>in</strong>ha), e dos decorators (SubFeatureA1Decorator,<br />

SubFeatureA2Decorator e SubFeatureA3Decorator).<br />

O gerador apenas precisa fazer a chamada que cria <strong>in</strong>stâncias dos decorators que<br />

correspondem às variantes selecionadas (l<strong>in</strong>has 3, 4 e 5).<br />

Da mesma forma que com as features alternativas, caso uma or feature precise ser<br />

implementada em várias classes, pode-se comb<strong>in</strong>ar o padrão Facade para reunir mais de uma<br />

classe em um único ponto.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!