Il modello di progettazione della strategia è spesso considerato un sostituto di funzioni di prim'ordine nelle lingue che le mancano.
Ad esempio, supponiamo che tu voglia passare la funzionalità a un oggetto. In Java dovresti passare nell'oggetto un altro oggetto che incapsula il comportamento desiderato. In un linguaggio come Ruby, passeresti semplicemente la funzionalità stessa sotto forma di una funzione anonima.
Comunque ci stavo pensando e ho deciso che forse la strategia offre più di una semplice funzione anonima.
Questo perché un oggetto può contenere uno stato esistente indipendentemente dal periodo di esecuzione del metodo. Tuttavia, una funzione anonima da sola può contenere uno stato che cessa di esistere nel momento in cui la funzione termina l'esecuzione.
In un linguaggio orientato agli oggetti che supporta funzioni di prima classe, il modello di strategia ha qualche vantaggio rispetto all'utilizzo delle funzioni?