Очень сложная диаграмма классов 😉 |
Существует достаточно много объектов, которые нужны нам только в одном экземпляре: пулы программных потоков, кэши, диалоговое окна, объекты ведения журнала, объекты драйверов устройств…
Но не все из типов подобных объектов допустимо создавать в нескольких экземплярах, так как это может привести к всевозможным проблемам — некорректному подведению программы, лишним затратам ресурсов или нелогичным результатам..
Решить эту проблему призван — Одиночка, который гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
В .NET Framework 4 появился класс System.Lazy
По умолчанию все открытые и защищенные члены класса Lazy
Это как раз то, что нужно для реализации полноценного Singleton =) Да и в самом Lazy
// пример использования System.Lazyclass LazySingleton { public static LazySingleton Instance { get { return _instance.Value; } } private LazySingleton() {} private static readonly Lazy _instance = new Lazy (() => new LazySingleton()); }
Comments