0 Tage Serie
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.