javascript / expert
Snippet
Objektorientierte Befehlsstapel-Kapselung mittels privater JS-Felder und Proxies
Die Kombination des objektorientierten Command-Entwurfsmusters mit strikter Klassenvererbung und gekapselten privaten Arrays baut eine deterministische Undo/Redo-Architektur für Svelte-Anwendungen auf.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Command {execute() { throw new Error('Abstract method'); }undo() { throw new Error('Abstract method'); }}export class TransactionManager {#undoStack = [];#redoStack = [];execute(command) {if (!(command instanceof Command)) throw new TypeError('Invalid command instance');command.execute();this.#undoStack.push(command);this.#redoStack.length = 0;}undo() {const cmd = this.#undoStack.pop();if (cmd) {cmd.undo();this.#redoStack.push(cmd);}}}
svelte
Erklärung
1
class Command {
Deklariert eine abstrakte Schnittstellenklasse für Befehlsobjekte mittels Objekt-Polymorphie.
2
#undoStack = [];
Kapselt den Ausführungsverlauf in privaten Klassenfeldern, um ungeprüfte Mutationen zu verhindern.
3
if (!(command instanceof Command)) throw new TypeError('Invalid command instance');
Erzwingt dynamische Typsicherheit durch Prüfung der Unterklassen-Hierarchie via instanceof.
4
this.#undoStack.push(command);
Zustandsänderungen werden polymorph erfasst, um schrittweise Rollbacks zu ermöglichen.