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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Figura 16: Uso do padrão Prototype para features alternativas<br />

A Figura 16 ilustra o uso do padrão Prototype com um gerador de código para implementar<br />

features alternativas. Para cada ponto de variação, neste caso a featureA, cria-se um protótipo,<br />

que implementa uma <strong>in</strong>terface (Cloneable) com um método para criar uma cópia de si mesmo<br />

(clone()). Cada variante alternativa (Sub-features A1, A2 e A3) é transformada em uma <strong>in</strong>stância<br />

concreta do protótipo, mediante a implementação do método clone(), responsável por criar uma<br />

<strong>in</strong>stância da variante.<br />

O gerador de código, ao produzir o código do produto, só precisa criar as chamadas<br />

correspondentes à criação do ponto de variação e da alternativa selecionada. No exemplo da<br />

Figura 16, mediante a seleção do ponto de variação featureA, o gerador gera as l<strong>in</strong>has 2-9 e<br />

13. A l<strong>in</strong>ha 12 contém o código que <strong>in</strong>stancia a alternativa selecionada, no caso a variante<br />

Sub-feature A1.<br />

Para o comportamento associado às features, uma solução é a utilização do Template<br />

method. A especificação do comportamento comum é def<strong>in</strong>ida em métodos abstratos de uma<br />

classe abstrata. O comportamento de cada alternativa é implementado em classes concretas,<br />

com implementações dos métodos correspondentes. A Figura 17 ilustra o uso deste padrão.<br />

O gerador apenas precisa gerar a criação do objeto concreto de acordo com a alternativa<br />

127

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

Saved successfully!

Ooh no, something went wrong!