Сек (шаблон)

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Сек (Singleton) е създаващ шаблон за дизайн, който се използва в обектно-ориентираното програмиране. Този шаблон се използва обикновено в моделирането на обекти, които трябва да бъдат глобално достъпни за обектите на приложението (например обекта съдрържайки структурите с настройките на програмата ) или обекти, които се нуждаят от максимално късна инициализация за пестенето на ресурси от паметта.

Съдържание

Примери[редактиране | edit source]

C++[редактиране | edit source]

C#[редактиране | edit source]

// Пример за Сек 
using System;
 
 
namespace SingletonDesignPattern
{
  /// <summary>
  /// главния клас за стартиране на примерното приложение
  /// </summary>
 
  class MainApp
  {
    /// <summary>
    /// Главния метод за стартиране
    /// </summary>
 
    static void Main()
    {
 
      // Конструктора (Constructor) е защитен (protected) -- операторът new не може да бъде извикан
 
      Singleton s1 = Singleton.Instance();
      Singleton s2 = Singleton.Instance();
 
      // Test for same instance
 
      if (s1 == s2)
      {
        Console.WriteLine("Objects are the same instance"); //и двата обекта са една и съща инстанция (оплътворение) на този клас
      }
      // Изчакай удар по конзолата от потребителя
      Console.ReadKey();
 
    }
 
  }
 
  /// <summary>
  /// The 'Singleton' class - класът Сек
  /// </summary>
  class Singleton
  {
    private static Singleton _instance;  //променлива за единствената инстанция на този клас
    // Constructor is 'protected' - конструтора е защитен и не може да бъде извикан
    protected Singleton()
    {
 
    }
 
    //единтвения начин за инстанцииране е от тук
    public static Singleton Instance()
    {
      // Uses lazy initialization. - използва късна инициализация
      // Note: this is not thread safe. - Да не се използва в многонишкови приложения
      if (_instance == null)
      {
        _instance = new Singleton();
      }
      return _instance;
    }
  }
 
}

Java[редактиране | edit source]