Нам потрібно використовувати шаблон дизайну Singleton в C #, коли нам потрібно переконатися, що буде створено лише один екземпляр певного класу, а потім забезпечити простий глобальний доступ до цього примірника для всієї програми.
Сценарії в режимі реального часу, де можна використовувати шаблон дизайну Singleton: Сервісні проксі: Як ми знаємо, виклик сервісного API - це велика операція в додатку. Процес, який займає більшу частину часу, - це створення клієнтського сервісу для виклику сервісного API. Якщо ви створите серверний проксі як Singleton, це підвищить продуктивність вашої програми.
Фасади: Ви також можете створити підключення до Бази даних як Singleton, що може підвищити продуктивність програми.
Журнали. У програмі виконання операцій вводу / виводу на файлі - це дорога операція. Якщо ви створили Logger як Singleton, це підвищить ефективність операцій вводу / виводу.
Обмін даними: Якщо у вас є постійні значення або значення конфігурації, ви можете зберегти ці значення в Singleton, щоб вони могли прочитати інші компоненти програми.
Кешування: Як ми знаємо, отримання даних із бази даних - це трудомісткий процес. У вашій програмі ви можете кешувати головну та конфігураційну пам'ять, що дозволить уникнути дзвінків DB. У таких ситуаціях клас Singleton може бути використаний для ефективного кешування кешування з синхронізацією потоку, що різко підвищує продуктивність програми.
Недоліки схеми дизайну Singleton у C # Недоліками використання шаблону дизайну Singleton у C # є такі:
Тестування одиниць дуже складно, оскільки це вносить глобальний стан у додаток. Це зменшує потенціал паралелізму в межах програми, оскільки для доступу до екземпляра singleton у багатопотоковому середовищі потрібно серіалізувати об'єкт за допомогою блокування.
Я взяв це з наступної статті.
https://dotnettutorials.net/lesson/singleton-design-pattern/