Il schema di progettazione della strategia viene spesso considerato un sostituto delle funzioni di prima classe nelle lingue a cui mancano.
Quindi, ad esempio, dici di voler passare la funzionalità in un oggetto. In Java dovresti passare nell'oggetto un altro oggetto che incapsula il comportamento desiderato. In una lingua 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 lo stato che esiste indipendentemente dal periodo in cui viene eseguito il metodo. Tuttavia una funzione anonima di per sé può solo contenere lo 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 sull'uso delle funzioni?