javascript / expert
Snippet
Kapselnde Klassenhierarchie mit privaten Feld-Interceptoren in Service-Klassen
Demonstriert objektorientierte Programmierung (OOP) in JavaScript unter Verwendung privater Klassenfelder (`#`) gemäß ES2022 und abstrakter Basisklassen-Muster für Next.js-Servicearchitekturen. Es setzt Kapselung und strikte Schnittstellenvererbung für Backend-Domain-Handler durch.
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
export class BaseServiceHandler {#secretKey;constructor(secretKey) {this.#secretKey = secretKey;}get secret() {return this.#secretKey;}execute(req) {throw new Error("Abstract method execute() must be overridden");}}export class UserRegistrationHandler extends BaseServiceHandler {#allowedRoles = new Set(['admin', 'editor', 'viewer']);execute(payload) {if (!this.#allowedRoles.has(payload.role)) {return { success: false, reason: "Invalid role delegation" };}return { success: true, digest: `${payload.username}:${this.secret}` };}}
nextjs
Erklärung
1
#secretKey;
Deklariert ein strikt privates Instanzfeld, auf das außerhalb der definierten Klasse nicht zugegriffen werden kann.
2
constructor(secretKey) { this.#secretKey = secretKey; }
Initialisiert den privaten Zustand während der Objektinstanziierung.
3
get secret() { return this.#secretKey; }
Bietet einen schreibgeschützten Getter zur sicheren Bereitstellung gekapselter Daten.
4
export class UserRegistrationHandler extends BaseServiceHandler {
Etabliert Unterklassenvererbung zur Erweiterung des abstrakten Basisverhaltens.
5
#allowedRoles = new Set(['admin', 'editor', 'viewer']);
Kapselt instanzspezifischen Validierungszustand in einer privaten Set-Eigenschaft.
6
execute(payload) {
Überschreibt die polymorphe Basismethode mit konkreter Logik.