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.