BEHAVIORAL

Strategy

Definire una famiglia di algoritmi, incapsularli e renderli intercambiabili. Strategy permette all'algoritmo di variare indipendentemente dai client che lo usano.

Il Problema

Quando hai molteplici algoritmi correlati e vuoi passare da uno all'altro a runtime senza condizionali complessi.

La Soluzione

Estrarre gli algoritmi in classi separate (strategie) con interfaccia comune. Il contesto mantiene riferimento a una strategia e delega il lavoro ad essa.

Struttura

Context usa Strategy interface. ConcreteStrategy implementa algoritmi specifici. Context può switchare strategie a runtime.

Partecipanti:
Strategy - interfaccia comune a tutti gli algoritmi
ConcreteStrategy - implementa algoritmo usando interfaccia Strategy
Context - mantiene riferimento a Strategy e delega lavoro ad essa
Esempi di Codice

Strategy per Payment Processing

Diversi metodi di pagamento (carta, PayPal, crypto) intercambiabili.

JAVASCRIPT
Loading...
Esempi nel Mondo Reale
Sorting algorithms (QuickSort, MergeSort, BubbleSort)
Compression algorithms (ZIP, RAR, GZIP)
Validation strategies (email, phone, credit card)
Route calculation (fastest, shortest, scenic)
Pricing strategies (normal, discount, premium)
Quando Usarlo
Quando hai molti algoritmi correlati che differiscono solo nel comportamento
Quando vuoi evitare condizionali complessi per scegliere algoritmo
Quando vuoi nascondere dettagli implementativi degli algoritmi
Quando gli algoritmi devono essere intercambiabili a runtime
Quando NON Usarlo
Quando hai solo un algoritmo
Quando gli algoritmi non cambiano mai
Quando il client non ha bisogno di scegliere l'algoritmo