Что такое шаблоны п...
 
Уведомления
Очистить все

Что такое шаблоны проектирования Singleton и как их реализовать в C#?

1 Записи
1 Пользователи
0 Likes
501 Просмотры
151-150 Okolokompa Форум
(@anonim)
Trusted Member
Присоединился: 4 года назад
Записи: 25
Создатель темы  

Что такое шаблон проектирования Singleton?

  1. Гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к нему.
  2. Singleton - это класс, который позволяет создавать только один его экземпляр и обычно предоставляет простой доступ к этому экземпляру.
  3. Чаще всего синглтоны не позволяют указывать какие-либо параметры при создании экземпляра, поскольку второй запрос экземпляра с другим параметром может быть проблематичным! (Если один и тот же экземпляр должен быть доступен для всех запросов с одним и тем же параметром, то более подходящим является заводской шаблон.)
  4. Существуют различные способы реализации шаблона Singleton в C #. Ниже приведены общие характеристики шаблона Singleton.
  • Единственный конструктор, который является частным и не имеет параметров.
  • Класс запечатан.
  • Статическая переменная, которая содержит ссылку на один созданный экземпляр, если таковой имеется.
  • Публичное статическое средство получения ссылки на один созданный экземпляр, создавая его при необходимости.

Пример того, как написать код с помощью Singleton:

  1. namespace Singleton {  
  2.     class Program {  
  3.         static void Main(string[] args) {  
  4.             Calculate.Instance.ValueOne = 10.5;  
  5.             Calculate.Instance.ValueTwo = 5.5;  
  6.             Console.WriteLine("Addition : " + Calculate.Instance.Addition());  
  7.             Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction());  
  8.             Console.WriteLine("Multiplication : " + Calculate.Instance.Multiplication());  
  9.             Console.WriteLine("Division : " + Calculate.Instance.Division());  
  10.             Console.WriteLine("\n----------------------\n");  
  11.             Calculate.Instance.ValueTwo = 10.5;  
  12.             Console.WriteLine("Addition : " + Calculate.Instance.Addition());  
  13.             Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction());  
  14.             Console.WriteLine("Multiplication : " + Calculate.Instance.Multiplication());  
  15.             Console.WriteLine("Division : " + Calculate.Instance.Division());  
  16.             Console.ReadLine();  
  17.         }  
  18.     }  
  19.     public sealed class Calculate {  
  20.         private Calculate() {}  
  21.         private static Calculate instance = null;  
  22.         public static Calculate Instance {  
  23.             get {  
  24.                 if (instance == null) {  
  25.                     instance = new Calculate();  
  26.                 }  
  27.                 return instance;  
  28.             }  
  29.         }  
  30.         public double ValueOne {  
  31.             get;  
  32.             set;  
  33.         }  
  34.         public double ValueTwo {  
  35.             get;  
  36.             set;  
  37.         }  
  38.         public double Addition() {  
  39.             return ValueOne + ValueTwo;  
  40.         }  
  41.         public double Subtraction() {  
  42.             return ValueOne - ValueTwo;  
  43.         }  
  44.         public double Multiplication() {  
  45.             return ValueOne * ValueTwo;  
  46.         }  
  47.         public double Division() {  
  48.             return ValueOne / ValueTwo;  
  49.         }  
  50.     }  
  51. }  

   
Цитата
Поделиться: