quarta-feira, 21 de março de 2012

Strategy

                É um padrão comportamental que tem por objetivo apresentar uma interface para classes que contém métodos com o mesmo nome e diferem entre si apenas na implementação dos métodos. Dentro deste contexto, interface é, não apenas classes abstratas marcadas com palavra reservada INTERFACE, mas também para qualquer modelo reutilizável e abstrato, seja explicitamente uma interface ou classe abstrata. Segue um exemplo:
Em uma loja, existem várias promoções ao longo do ano. É criada então uma interface para a promoção que deverá ser implementada nas classes que irão conter o comportamento para a promoção específica:

package com.strategy;
import java.math.BigDecimal;
public interface Promocao {
     BigDecimal desconto();
}
As classes das promoções:
class PromocaoDeNatal implements Promocao {
     @Override
     public BigDecimal desconto() {
          return 10;
     }
}
class PromocaoDiaDosNamorados implements Promocao {
    @Override
    public BigDecimal desconto() {
         return 15;
    }
}
class PromocaoQueimaDeEstoque implements Promocao {
     @Override
     public BigDecimal desconto() {
         return 40;
     }
}

Agora, pode-se simplesmente criar um objeto do tipo da interface e instanciar com o tipo de promoção necessária aquela epoca do ano. Nesse exemplo, assuma que a classe Celular contém um atributo do tipo da interface Promocao e o instancia com PromocaoDeNatal, que é o tipo de promoção que está sendo utilizada no momento.

public class Celular extends Produto {
     public Celular() {
          this.promocao = new PromocaoDeNatal();
     }
}

Fontes:

Padrão de projetos: Strategy – por Robson Farias - http://serpeerless.wordpress.com/2008/06/22/entendendo-o-padrao-de-projetos-strategy/

Sérginho Vittorino – Padrões de Projeto - http://www.youtube.com/user/SerginhoVittorino?feature=watch

Postador por: Hélio Marcus, ADS - 6º Período

Nenhum comentário:

Postar um comentário