Boa noite Pessoal, estou aplicar o padrão strategy nesse código , tenho dúvida se é realmente assim que se aplica o padrão. estou pegando de um exemplo do livro “Design Patters com Java” da casa dos códigos.
O que você fez nada mais é do que sobrescrita de métodos.
Se fosse Strategy, você teria uma interface para o algoritmo do cálculo.
Você iria definir um atributo do tipo dessa interface na classe Veículo e faria com que Caminhao instanciasse uma implementação da interface e o Onibus instanciasse outra implementação.
O Strategy serve para casos onde várias classes só diferem em um determinado comportamento, algo específico. No seu exemplo, as subclasses de Veiculo diferem apenas na maneira como o valor é calculado. Ao invés de herdar de Veiculo, você cria um novo tipo abstrato referente à regra de cálculo de preço e usa uma referência desse tipo para calcular o preço.
Esse exemplo é muito simplificado, usar Strategy aqui é um overkill gigantesco. A classe Veiculo é completamente desnecessária, a regra de cálculo poderia ser utilizada diretamente por ContaEstacionamento.
staroski4 likes
Exatamente @lvbarbosa!
Fico chateado quando professores criam cenários muito simples para tentar ensinar Design Patterns.
Não faz sentido pois os padrões são justamente para ajudar a simplificar cenários complexos.
O que acaba acontecendo é que, ao aplicar Design Patterns em cenários simples, acabam tornando a solução complexa.
A consequência disso é que desperta no estudante a sensação de que não vale a pena utilizar Design Patterns, o que é lamentável.
G
gabrielqn
eu vi o padrão no livro e criei um cenário mais simples possível para entender e depois ir evoluindo o mesmo
staroski2 likes
Ah legal, entendi, realmente é uma forma bacana para aprender muitas coisas.
Mas percebeu o que aconteceu neste caso?
Te deixou com dúvidas.
Já vi isso acontecer muitas vezes com vários colegas.
Acredito que acontece justamente porque os padrões não foram elaborados para resolver problemas triviais.
Se você tenta aplicar Design Patterns em cenários triviais, acaba injetando complexidade desnecessária no código.
G
gabrielqn
Exatamente , tentei resolver um problema simples de forma complexa.