Olá. Considere o seguinte projeto ( Strategy):
public interface IPromocao{
Double getDesconto(Venda venda);
}
public class PromocaoBlackFriday implements IPromocao{
public Double getDesconto(Venda venda){
return venda.getTotal() * .8;
}
public class PromocaoDeNatal implements IPromocao{
public Double getDesconto(Venda venda){
return venda.getTotal() * .5;
}
Dessa forma podemos estender o sistema criando outras promoções sem a necessidade de alterações nos clientes (OCP, Polimorfismo, etc). OK!
Minha análise recai sob dois aspectos: persistência e gui
Imagine que tenho a necessidade de escolher/setar via GUI uma promoção. Como listá-las? Como fazer com que esses objetos possam ser escolhidos? Teria que adicioná-los numa lista, além do acréscimo de um atributo descricao?
Creio que não seja possível acrescentar novas promoções (objetos), com regras específicas em tempo de execução, concordam? Pois, não bastaria passar apenas o valor da porcentagem, poderiam ser regras variadas.
Desculpe-me se não fui claro.