javascript / intermediate
Snippet
Polymorphe Service-Ersetzung mit abstrakten Klassen und Providern
Die Verwendung einer abstrakten Klasse als Dependency-Injection-Token ermöglicht Subtyp-Polymorphismus in Angular. Komponenten hängen vom abstrakten Vertrag ab, während Provider zur Laufzeit konkrete abgeleitete Implementierungen bereitstellen, ohne den Komponentencode zu verändern.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { Injectable, Provider } from '@angular/core';export abstract class NotificationProvider {abstract sendAlert(message: string): void;}@Injectable()export class PushNotificationProvider extends NotificationProvider {sendAlert(message: string): void {console.log(`Push Alert: ${message}`);}}export const NOTIFICATION_CONFIG: Provider = {provide: NotificationProvider,useClass: PushNotificationProvider};
angular
Erklärung
1
export abstract class NotificationProvider {
Deklariert eine abstrakte Token-Klasse, die den öffentlichen Vertrag definiert, ohne konkretes Verhalten bereitzustellen.
2
export class PushNotificationProvider extends NotificationProvider {
Erweitert die Basisklasse und stellt eine konkrete Implementierung der abstrakten Methode bereit.
3
provide: NotificationProvider, useClass: PushNotificationProvider
Weist dem abstrakten Basistyp-Token die konkrete Kindklasse im Dependency-Injection-Container zu.