Das Entwurfsmuster Strategie wird häufig als Ersatz für erstklassige Funktionen in Sprachen angesehen, denen diese fehlen.
Angenommen, Sie möchten Funktionen in ein Objekt übertragen. In Java müssten Sie dem Objekt ein anderes Objekt übergeben, das das gewünschte Verhalten kapselt. In einer Sprache wie Ruby übergeben Sie die Funktionalität einfach selbst in Form einer anonymen Funktion.
Allerdings habe ich darüber nachgedacht und festgestellt, dass Strategy möglicherweise mehr bietet als eine reine anonyme Funktion.
Dies liegt daran, dass ein Objekt einen Status enthalten kann, der unabhängig von dem Zeitraum ist, in dem die Methode ausgeführt wird. Eine anonyme Funktion kann jedoch nur den Status halten, der nicht mehr vorhanden ist, sobald die Ausführung der Funktion abgeschlossen ist.
Hat das Strategiemuster in einer objektorientierten Sprache, die erstklassige Funktionen unterstützt, einen Vorteil gegenüber der Verwendung von Funktionen?