Ich möchte etwas über Enten Beispiel zu diesem Buch, das mich verwirrt und ich fühle Widersprüche.Ente Beispiel Strategie Muster - Kopf erstes Design Muster
Problem
die Schlussfolgerungen
Er sagte, "wenn joe neues Verhalten der Ente Super hinzugefügt, er wurde auch das Verhalten hinzufügen, die nicht für sachgemäßer wurden sume Duck Unterklassen "
Aber in der Schlussfolgerung fügte er performFly()
und performQuack();
was ist das anders, weil ich denke, dass es gleich he was also adding behavior that was not appropiate for sume Duck subclasses
?
** Bild aus dem Buch Kopf erstes Designmuster ** Diese Frage besagt nicht, dass dieses Buch nicht gut ist, dieses Buch ist meiner Meinung nach wirklich gut. Das ist nur ich, der etwas verlangt, was ich nicht aus dem Buch bekommen habe.
Alles, was sie taten, war eine Funktion (quack) zu nehmen und sie in eine separate Klasse zu trennen. Das ist ein bisschen kompliziert. Es wäre besser, eine Unterklasse von Enten namens "FlyingDucks" zu machen und dann Fly() hineinzulegen. Dann erben alle fliegenden Enten diese Klasse. Alternativ dazu erstellt man FLy() abstract und zwingt jede Unterklasse zu definieren, was es bedeutet zu fliegen. Was sie taten, war mehr Arbeit und komplizierter. Jede Unterklasse muss eine Fly-Klasse auswählen, die flyBehavior zugewiesen wird - auch wenn sie nicht fliegen können. – kainaw
Bin ich richtig, wenn ich sage "das Problem" und "die Schlussfolgerung" ist ein Widerspruch? oder ich verstehe es einfach nicht, was er meint? – Kakashi
Es wäre besser Design zu erkennen, dass, wie das (erfundene) Problem Enten ist, eine Gummiente keine Ente ist - sie fliegt nicht, sie schwimmt nicht (außer du schwimmst), usw. Wenn Sie aus irgendeinem Grund wirklich eine Klasse haben wollen, die echte Enten und Gummienten umfasst, dann sollten Sie nach Gemeinsamkeiten in diesen Punkten suchen und diese zu den gemeinsamen Attributen machen; Beginnen Sie nicht mit Attributen, die für einige der Elemente in Ihrem Bereich üblich sind, und passen Sie die anderen an die entsprechenden Komponenten an. – arcy