Уведомления
Очистить все
C# и .NET
1
Записи
1
Пользователи
0
Likes
501
Просмотры
Создатель темы 10/06/2020 2:03 пп
Что такое шаблон проектирования Singleton?
- Гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к нему.
- Singleton - это класс, который позволяет создавать только один его экземпляр и обычно предоставляет простой доступ к этому экземпляру.
- Чаще всего синглтоны не позволяют указывать какие-либо параметры при создании экземпляра, поскольку второй запрос экземпляра с другим параметром может быть проблематичным! (Если один и тот же экземпляр должен быть доступен для всех запросов с одним и тем же параметром, то более подходящим является заводской шаблон.)
- Существуют различные способы реализации шаблона Singleton в C #. Ниже приведены общие характеристики шаблона Singleton.
- Единственный конструктор, который является частным и не имеет параметров.
- Класс запечатан.
- Статическая переменная, которая содержит ссылку на один созданный экземпляр, если таковой имеется.
- Публичное статическое средство получения ссылки на один созданный экземпляр, создавая его при необходимости.
Пример того, как написать код с помощью Singleton:
- namespace Singleton {
- class Program {
- static void Main(string[] args) {
- Calculate.Instance.ValueOne = 10.5;
- Calculate.Instance.ValueTwo = 5.5;
- Console.WriteLine("Addition : " + Calculate.Instance.Addition());
- Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction());
- Console.WriteLine("Multiplication : " + Calculate.Instance.Multiplication());
- Console.WriteLine("Division : " + Calculate.Instance.Division());
- Console.WriteLine("\n----------------------\n");
- Calculate.Instance.ValueTwo = 10.5;
- Console.WriteLine("Addition : " + Calculate.Instance.Addition());
- Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction());
- Console.WriteLine("Multiplication : " + Calculate.Instance.Multiplication());
- Console.WriteLine("Division : " + Calculate.Instance.Division());
- Console.ReadLine();
- }
- }
- public sealed class Calculate {
- private Calculate() {}
- private static Calculate instance = null;
- public static Calculate Instance {
- get {
- if (instance == null) {
- instance = new Calculate();
- }
- return instance;
- }
- }
- public double ValueOne {
- get;
- set;
- }
- public double ValueTwo {
- get;
- set;
- }
- public double Addition() {
- return ValueOne + ValueTwo;
- }
- public double Subtraction() {
- return ValueOne - ValueTwo;
- }
- public double Multiplication() {
- return ValueOne * ValueTwo;
- }
- public double Division() {
- return ValueOne / ValueTwo;
- }
- }
- }