Entwurfsmuster für Undo Engine

Ich schreibe ein strukturelles Modellierungswerkzeug für eine Anwendung im Bauingenieurwesen. Ich habe eine große Modellklasse, die das gesamte Gebäude darstellt und Sammlungen von Knoten, Linienelementen, Lasten usw. enthält, die ebenfalls benutzerdefinierte Klassen sind.

Ich habe bereits eine Undo-Engine programmiert, die nach jeder Änderung am Modell eine Deep Copy speichert. Jetzt begann ich zu überlegen, ob ich anders hätte codieren können. Anstatt die Deep-Kopien zu speichern, könnte ich möglicherweise eine Liste aller Modifikatoraktionen mit einem entsprechenden Reverse-Modifikator speichern. Damit könnte ich die umgekehrten Modifikatoren auf das aktuelle Modell anwenden, um es rückgängig zu machen, oder die Modifikatoren, um es wiederherzustellen.

Ich kann mir vorstellen, wie Sie einfache Befehle ausführen, die Objekteigenschaften usw. ändern. Aber wie wäre es mit komplexen Befehlen? Einfügen neuer Knotenobjekte in das Modell und Hinzufügen einiger Linienobjekte, die Verweise auf die neuen Knoten enthalten.

Wie würde man das umsetzen?

Antworten auf die Frage(22)

Ihre Antwort auf die Frage