Considerando o Strategy Pattern aplicado nesse exemplo do curso
package br.com.alura.tdd.modelo;
import java.math.BigDecimal;
public enum Desempenho {
/*
* Impl do curso , para cada novo enum, exige a impl do metodo abstrato de forma concreta
*E por que vamos usar um método abstrato?
*Porque, com um método abstrato, cada constante é obrigada a fornecer uma implementação.
*/
A_DESEJAR {
@Override
public BigDecimal getPercentualDeAumentoSalarial() {
return new BigDecimal("0.03");
}
},
BOM {
@Override
public BigDecimal getPercentualDeAumentoSalarial() {
return new BigDecimal("0.15");
}
},
OTIMO {
@Override
public BigDecimal getPercentualDeAumentoSalarial() {
return new BigDecimal("0.20");
}
};
public abstract BigDecimal getPercentualDeAumentoSalarial();
}
Apliquei uma outra abordagem, que surtiu o mesmo efeito, qual padrao poderia descreve-la ? Visto que estou delegando a tarefa para o construtor.
package br.com.alura.tdd.modelo;
import java.math.BigDecimal;
public enum Desempenho {
/*
*
* Minha impl, vai aplicar o valor do percentual ao construtor do objeto, conforme a chamada a constante.
*
* Ou seja para cada nova constante criada, obriga informar o valor por argumento para o construtor
*
* apos, a cada chamada tera um objeto com o atributo.
*
*
*/
A_DESEJAR(new BigDecimal("0.03")),
BOM(new BigDecimal("0.15")),
OTIMO(new BigDecimal("0.20"));
private BigDecimal percentual;
Desempenho(BigDecimal percentual) { this.percentual = percentual; }
public BigDecimal getPercentualDeAumentoSalarial() { return this.percentual; }
}