Pytanie o dependency injection / serwisy

0

Cześć,
Pytanie od juniora,
Jedna rzecz nie daje mi spokoju i będę wdzięczny za wyjaśnienie.
Otóż w sytuacji gdy mamy serwis np. w angularze i wstrzykujemy go w konstruktorze w ten sposób:

constructor(private logger: Logger) { }

To tak naprawdę jednocześnie tworzymy nowy obiekt, podobnie jak w czystym js: this.logger = new Logger();
Oczywiście ten sam serwis może być współdzielony przez kilka komponentów.

I tu pojawia się moje pytanie - jeżeli w każdym komponencie przy wstrzykiwaniu tworzymy nową instancję, to dlaczego stan tego serwisu będzie współdzielony dla wszystkich komponentów? Intuicja podpowiada mi, że każdy nowo stworzony obiekt powinien funkcjonować niezależnie.

1

https://angular.io/api/core/Injectable

https://pl.wikipedia.org/wiki/Singleton_(wzorzec_projektowy)

Dekorator @Injectable zamienia serwis na Singleton

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class UserService {
}
0

Dzięki, doczytałem i już mi się rozjaśniło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1