Salve salveee devsss, tudo bacana? Comigo está tudo tranquilo e no artigo de hoje vamos dar prosseguimento na nossa famosa série de artigos “A Fábrica de Arquitetos” mostrando o sexto padrão, o Strategy Pattern.
Apesar de ser um dos padrões mais simples, é um dos padrões mais utilizados principalmente em cenários nos quais precisamos trocar a execução de um método dado algum cenário.
…
O que é?
Frequência de uso: 4/5 — Médio Alto
O padrão Strategy é um padrão da família dos comportamentais no qual o seu objetivo é criar diferentes execuções (estratégias) para um mesmo método, então com ele podemos criar uma família de algoritmos diferentes para executarmos quando houver necessidade.
Bom, vamos lá, imagine que você tem sua interface ICurrency(interface de estratégia), contendo o contrato para o método CalculateBRLQuote, que como seu próprio nome diz calcula a cotação da moeda informada em real.
Logo após temos 3 classes concretas que contém a estratégia, Dollar, Euro, Libra que herdam a interface ICurrency e implementam o método definido na estratégia.
Ou seja, você tem 3 classes, implementando a mesma interface, contendo a mesma assinatura de método, porém cada um com um comportamento diferente.
Agora dependendo de qual seu contexto ou cenário, você pode escolher uma das diferentes estratégias criadas para solucionar seu problema.
Logo abaixo vou deixar o UML do padrão:

…
Mãos no Código!
Como de praxe vamos implementar o exemplo utilizado na explicação do tópico anterior, nosso cenário é o seguinte, precisamos calcular a cotação em real de diferentes tipos de moeda.
Para isso vamos aplicar nosso padrão e a primeira e principal coisa que a gente precisa é a nossa interface com os métodos de estratégia, no nosso caso a ICurrency.cs.
Agora com nossa interface de estratégia precisamos das nossas classes concretas que implementam os métodos que calculam a cotação.
Dollar.cs
Euro.cs
Libra.cs
Uma coisa que vale ressaltar é que os valores de cotação aí estão fixos, o certa seria buscar esses valores de alguma fonte confiável, porém esse não é o foco do artigo.
Por fim, com o padrão já implementado a gente só precisa do nosso contexto, que é quem irá utilizar a implementação aplicada e no nosso caso é o nosso Program.cs.
Vamos dar uma rápida olhada no código a seguir, perceba que temos nossa propriedade currency que é do tipo ICurrency, no decorrer do código perceba que ele implementa comportamentos de Dollar, Euro e Libra, basta apenas você definir qual precisa.
…
Conclusão
No artigo de hoje mostrei um dos padrões mais famosos e simples de todos os 23 já documentados, ele no disponibiliza uma estratégia para utilizar diferentes comportamentos utilizando a mesma interface, espero que tenha ficado claro e objetivo o uso desse padrão.
Agradeço a atenção e bons estudos!!!!!
Caso precise entrar em contato, me mande uma mensagem aqui.
Baixe o projeto clicando aqui.
