O padrão de design da estratégia é frequentemente considerado um substituto para funções de primeira classe em idiomas que não as possuem.
Por exemplo, digamos que você desejasse passar a funcionalidade para um objeto. Em Java, você teria que passar no objeto outro objeto que encapsula o comportamento desejado. Em um idioma como Ruby, você passaria a própria funcionalidade na forma de uma função anônima.
No entanto, eu estava pensando sobre isso e decidi que talvez a Strategy ofereça mais do que uma simples função anônima.
Isso ocorre porque um objeto pode conter um estado que existe independentemente do período em que o método é executado. No entanto, uma função anônima por si só pode conter apenas um estado que deixa de existir no momento em que a função termina a execução.
Em uma linguagem orientada a objetos que suporta funções de primeira classe, o padrão de estratégia tem alguma vantagem sobre o uso de funções?