NestJS does not natively support multi-providers like Angular, but the same result is achieved with a factory provider that aggregates all implementations into an array or map and exposes them under a single token.
Adding a new notifier only requires registering it as a provider and adding it to the factory — no changes to NotificationService.
Each implementation is a singleton provider and can inject its own dependencies.
The array token is easy to mock in tests with a simple useValue array.
Works for any interface-based polymorphism scenario: validators, event handlers, middleware chains.