In dem folgenden UML-Diagramm, das ein Decorator-Muster zum Entwerfen von Spielszenenszenario darstellt, wie werden die Objekte in Heap aussehen, wenn der folgende Code ausgeführt wird?Decorator Design Pattern Speicherdiagramm
GameCharacter milo;
milo = new Armour (new DefensiveSpell(new Knight()));
milo.Defend();
Außerdem ist der obige Code das gleiche wie dem folgenden Code:
GameCharacter milo;
milo = new Knight();
milo = new DefensiveSpell(milo);
milo = new Armour(milo);
milo.Defend();
Ich glaube, der Ritter Objekt wird mit 'milo' Objekt zeigen zuerst auf dem Heap erstellt werden zu ihm. Dann werden Defensivspell und Rüstung erstellt. Das "gewickelte" Objekt in Defensivspell zeigt dann auf "Ritter" und das "gewickelte" Objekt in Rüstung zeigt auf Verteidigungsspell. Auch wenn milo.Defend() Code ausgeführt wird, glaube ich, dass die Defend() Methode in Armor aufgerufen wird, die Defend() von DefensiveSpell aufrufen wird, die wiederum Defend() des Ritters aufrufen wird, der schließlich eine Verteidigungsaktion durchführt. Hier ist das Diagramm, das ich bisher habe:
Danke, das beantwortet meine Frage. – Zizo47