Musimy użyć wzorca projektowego Singleton w języku C #, gdy musimy zapewnić, że zostanie utworzone tylko jedno wystąpienie określonej klasy, a następnie zapewnić prosty globalny dostęp do tego wystąpienia dla całej aplikacji.
Scenariusze w czasie rzeczywistym, w których można użyć wzorca projektowego Singleton: Proxy usług: jak wiemy, wywoływanie interfejsu API usługi jest rozległą operacją w aplikacji. Proces, który zajmuje większość czasu, polega na utworzeniu klienta usługi w celu wywołania interfejsu API usługi. Jeśli utworzysz serwer proxy usługi jako Singleton, poprawi to wydajność Twojej aplikacji.
Fasady: Możesz także utworzyć połączenia z bazą danych jako Singleton, co może poprawić wydajność aplikacji.
Dzienniki: w aplikacji wykonywanie operacji we / wy na pliku jest kosztowną operacją. Jeśli utworzysz Logger jako Singleton, poprawi to wydajność operacji I / O.
Udostępnianie danych: jeśli masz jakieś stałe wartości lub wartości konfiguracyjne, możesz zachować te wartości w Singleton, aby mogły być odczytane przez inne komponenty aplikacji.
Buforowanie: jak wiemy, pobieranie danych z bazy danych jest procesem czasochłonnym. W aplikacji możesz buforować wzorzec i konfigurację w pamięci, co pozwoli uniknąć wywołań DB. W takich sytuacjach klasa Singleton może być użyta do obsługi buforowania z synchronizacją wątków w efektywny sposób, co znacznie poprawia wydajność aplikacji.
Wady wzorca projektowego Singleton w C # Wady używania wzorca projektowego Singleton w C # są następujące:
Testowanie jednostkowe jest bardzo trudne, ponieważ wprowadza do aplikacji stan globalny. Zmniejsza to potencjał równoległości w programie, ponieważ aby uzyskać dostęp do instancji singletonu w środowisku wielowątkowym, należy serializować obiekt za pomocą blokowania.
Wziąłem to z następującego artykułu.
https://dotnettutorials.net/lesson/singleton-design-pattern/