É 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();
}
BigDecimal desconto();
}
As classes das promoções:
class PromocaoDeNatal implements Promocao {
@Override
public BigDecimal desconto() {
return 10;
}
public BigDecimal desconto() {
return 10;
}
}
class PromocaoDiaDosNamorados implements Promocao {
@Override
public BigDecimal desconto() {
return 15;
}
public BigDecimal desconto() {
return 15;
}
}
class PromocaoQueimaDeEstoque implements Promocao {
@Override
public BigDecimal desconto() {
return 40;
}
}
public BigDecimal desconto() {
return 40;
}
}
public class Celular extends Produto {
public Celular() {
this.promocao = new PromocaoDeNatal();
}
}
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