Simplificando o Desenvolvimento com o Design Pattern Strategy
Olá, Devs! 👋 Hoje, vamos mergulhar em um dos conceitos mais transformadores no mundo da programação: o Design Pattern Strategy, e vamos explorar como aplicá-lo de maneira eficaz usando TypeScript.
Entendendo o Design Pattern Strategy 🧠
O Design Pattern Strategy é um padrão comportamental que nos permite definir uma família de algoritmos, encapsulá-los como objetos e torná-los intercambiáveis. A beleza desse padrão está em sua capacidade de permitir que o algoritmo mude independentemente dos clientes que o utilizam.
Por Que Strategy É Um Game-Changer? 🚀
- Flexibilidade: Troque algoritmos sem mexer no código cliente.
- Desacoplamento: Separa o que faz de como faz.
- Manutenibilidade: Facilita significativamente a expansão e manutenção dos algoritmos.
Demonstração Prática com TypeScript 📝
Imagine um cenário: uma loja online precisa aplicar diferentes estratégias de desconto com base no tipo de cliente. Vamos ver como o Strategy Pattern pode simplificar isso:
1. Definindo a Interface de Estratégia
Primeiro, criamos uma interface para nossas estratégias de desconto:
interface DiscountStrategy {
applyDiscount(amount: number): number;
}
Passo 2: Implementar Estratégias Concretas
Agora, implementamos estratégias de desconto específicas:
class NoDiscount implements DiscountStrategy {
applyDiscount(amount: number): number {
return amount;
}
}
class SeasonalDiscount implements DiscountStrategy {
applyDiscount(amount: number): number {
return amount * 0.9; // 10% de desconto
}
}
class LoyaltyDiscount implements DiscountStrategy {
applyDiscount(amount: number): number {
return amount * 0.8; // 20% de desconto
}
}
Passo 3: Contexto para Utilizar Estratégias
Criamos um contexto que utiliza uma estratégia de desconto:
class DiscountContext {
private strategy: DiscountStrategy;
constructor(strategy: DiscountStrategy) {
this.strategy = strategy;
}
setStrategy(strategy: DiscountStrategy) {
this.strategy = strategy;
}
calculate(amount: number): number {
return this.strategy.applyDiscount(amount);
}
}
Passo 4: Aplicar Estratégias
Por fim, aplicamos diferentes estratégias de desconto baseadas na necessidade:
const discountContext = new DiscountContext(new NoDiscount());
console.log(discountContext.calculate(100)); // Sem desconto: 100
discountContext.setStrategy(new SeasonalDiscount());
console.log(discountContext.calculate(100)); // Desconto sazonal: 90
discountContext.setStrategy(new LoyaltyDiscount());
console.log(discountContext.calculate(100)); // Desconto de fidelidade: 80
Conclusão
Com este simples exemplo, você pode ver como o Design Pattern Strategy permite a flexibilidade e a expansão de seus códigos de maneira limpa e organizada.
Palavras-chave: Design Pattern Strategy, TypeScript, Padrões de Projeto, Flexibilidade de Código, Desacoplamento, Manutenibilidade, Estratégias de Desconto, Práticas de Codificação.
Espero que este post tenha esclarecido o padrão Strategy e como implementá-lo em TypeScript. Até a próxima, Devs! 🚀
Top comments (0)