In Head First Design Patterns wird das Strategiemuster anhand eines Duck-Beispiels vermittelt, bei dem verschiedenen Duck-Unterklassen zur Laufzeit ein bestimmtes Verhalten zugewiesen werden kann. Nach meinem Verständnis besteht der Zweck des Strategiemusters darin, das Verhalten eines einzelnen Objekts zur Laufzeit zu ändern. Sie verwenden jedoch die Vererbung von Duck, um das Verhalten verschiedener Ententypen zu ändern.
Relevanz?
Ist die Kontextvererbung von Duck für das Strategiemuster irrelevant oder sind unterschiedliche Ententypen und auch deren Verhalten ein guter Grund, das Strategiemuster anzuwenden? Sind Situationen, in denen Sie beide variieren müssen, ein guter Grund, ein Strategiemuster zu verwenden? Warum sollten sie dies als Beispiel für ein Strategiemuster aufnehmen?
Ein einfacheres Beispiel
Könnte ich dieses Beispiel weiter vereinfachen, indem ich nur eine Entenklasse habe (keine abgeleiteten Klassen)? Wenn dann ein Entenobjekt implementiert wird, kann es aufgrund bestimmter Umstände, die nicht von seinem eigenen Objekttyp abhängen, unterschiedlichen Verhaltensweisen zugewiesen werden. Zum Beispiel: FlyBehavior ändert sich je nach Wetterlage oder QuackBehavior ändert sich je nach Tageszeit oder wie hungrig eine Ente ist. Mir ist klar, dass dies ein anderes Problem lösen würde als das im Buch, aber ich suche nach einem relevanten Beispiel für ein Strategiemuster, auf das ich zurückgreifen kann.
Würde mein obiges Beispiel auch das Strategiemuster darstellen?
Bearbeiten:
Es ist mir gelungen, zwei einfachere Beispiele für Strategiemuster zu finden, die strenger darauf abzielen , nur Strategiemuster ohne Kontextvererbung zu sein: Hunter.java und solver.py .
quelle