1
resposta

Dúvida na aplicação do Design pattern Strategy

Olá amigos,

Quero solicitar uma ajuda para aplicar o design patterns em uma aplicação legado que tenho aqui, fiz o exemplo abaixo para ilustrar.

public void sendMessage(Account account) throws Exception {

    String mensagem = null;

    System.out.println(account.getName());
    System.out.println(account.getEmail());

    if (account.getCountry().equalsIgnoreCase("BR")) {
        mensagem = "Seja bem vindo ao nosso portal";
    } else if  (account.getCountry().equalsIgnoreCase("MX")) {
        mensagem = ("Bienvenido a nuestro portal");    
    } else if  (account.getCountry().equalsIgnoreCase("EN")) {
        mensagem = ("Welcome to our portal");    
    }    

}

Na aplicação eu recebe um objeto (account) e um atributo especifico ele testa para identificar a localidade e direcionar a mensagem correspondente. A lista de localidades pode crescer ainda mais, por isso entendo que aqui caberia o design patter strategy.

A principio tentei aplicar um Enum com método abstrato conforme o exemplo abaixo:

package com.example.desingPatterns.enums;

public enum CountryTemplate {
    BR) {
        @Override
        public String selectTemplate() {
            return "valor template Portugues";
        }
    },
    MX {
        @Override
        public String selectTemplate() {
            return "valor template Espanhol";
        }
    },
    EN {
        @Override
        public String selectTemplate() {
            return "valor template English";        }
    };


    public abstract String selectTemplate();
}

E fazendo a chamada dessa forma

String t = selecionaMensagem (account.getCountry());`

Mas depois vi que não atenderia completamente pois para um mesmo valor de retorno eu teria diversas constantes, por exemplo para países de idioma espanhol Argentina, Paraguai, Colombia etc. teria constantes que retornaria mesmo valor e talvez só estivesse trocando o problema de lugar.

Agradeço antecipadamente algum amigo que puder direcionar uma solução que melhore essa parte do meu código.

Obrigado.

1 resposta

Fala Antonio, tudo certo?

De fato, o padrão strategy pode ajudar nesse caso! Nós temos aqui na plataforma cursos de Design Patterns em Java, onde são ensinadas boas práticas de design de código! No curso Design Patterns em Java I, é ensinado o padrão strategy, como ele é aplicado e quais suas motivações! Além disso, são mostrados outros padrões como o command e observer! É muito importante se preocupar com a qualidade do código, para melhorar a manutenibilidade do projeto!

Para se aprofundar ainda mais em boas práticas de código e arquitetura, recomendo a Formação Arquitetura e Design de Projetos, que aborda SOLID, Design Patterns, arquitetura e testes!

Em caso de dúvidas, estou à disposição.

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!