Orientação a Objetos Strategy

Strategy

Strategy

Strategy é um padrão de projeto, onde deixamos o código mais organizado e eficiente, evitando a utilização de um monte de if, else if, inserindo um monte de conteúdo em um método. Deixando o código mais limpo e facilitando futuras manutenções por outros desenvolvedores.

Utilizamos uma classe Pagamento para inserção de toda nossa lógica para calcular as formas de pagamento, ela funciona, mas será que é a forma mais adequada a ser realizada? Toda vez que formos inserir um novo elemento, teremos que adicionar um novo else if, o código iria acabar ficando poluído, dificultando futuros desenvolvimentos.

Aplicando Strategy, vamos ter uma interface MetodoPagamento que sera utilizada nas classes dos métodos de pagamentos Debito e Credito e uma classe Pagamento para interpretar a chamada do index e executar o calculo.

Na classe MetodoPagamento, definimos uma interface na qual os métodos de pagamento (Debito e Credito) que irão herdar e utilizar a mesma estrutura.

Agora temos a classe Debito e Credito, onde utilizam a mesma estrutura da interface, porém aplicando o calculo de acordo com o tipo de pagamento, evitando um monte de if e else if. E também estamos utilizando o polimorfismo no método calcular();

Agora temos uma classe Pagamento, onde vamos realizar a chamada de um MetodoPagamento que será definido na index.

Na index, realizamos a chamada, passando o MetodoPagamento um objeto.

Agora temos o Strategy implementado, um padrão de orientação a objetos, mais organizado e eficiente, evitando diversos ifs e um método extenso, facilitando futuras implementações e manutenção por outros desenvolvedores.

Você pode se perguntar que agora temos mais arquivos e código, mas imagina quando o projeto crescer e tivermos descontos, tipo de pessoas (jurídica, física), etc. Iremos conseguir trabalhar melhor, com mais organização e eficiência.

No Comments, Be The First!

Your email address will not be published.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.