Feedback

C# - Singleton

Veröffentlicht von am 01.12.2007
(1 Bewertungen)
Generische und threadsichere Implementierung des Singleton Entwurfsmusters
GFU-Schulungen  [Anzeige]

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

#region Using Statements
using NUnit.Framework;
#endregion

namespace Helper
{
    namespace DesignPatterns
    {
        /// <summary>
        /// Implementation of the Singleton Pattern. The singleton pattern is one of 
        /// the best-known patterns in software engineering. Essentially, a singleton 
        /// is a class which only allows a single instance of itself to be created, and 
        /// usually gives simple access to that instance. Most commonly, singletons 
        /// don't allow any parameters to be specified when creating the instance - as 
        /// otherwise a second request for an instance but with a different parameter 
        /// could be problematic!
        /// http://www.yoda.arachsys.com/csharp/singleton.html
        /// </summary>
        /// <typeparam name="T">type of the singleton</typeparam>
        public sealed class Singleton<T> where T : class, new()
        {
            static T m_Instance = null;

            /// <summary>
            /// this variable is used for thread safety
            /// </summary>
            static readonly object m_Padlock = new object();

            /// <summary>
            /// returns the reference of the singleton
            /// </summary>
            public static T Instance
            {
                get
                {
                    lock (m_Padlock)
                    {
                        if (m_Instance == null)
                        {
                            m_Instance = new T();
                        }
                        return m_Instance;
                    }
                }
            }
        }
    }

    namespace UnitTests
    {
        class Account
        {
            int number;

            public int Number
            {
                get { return number; }
                set { number = value; }
            }
        }

        [TestFixture]
        public class TestSingleton
        {
            [Test]
            public void TestSingletonClass()
            {
                DesignPatterns.Singleton<Account>.Instance.Number = 34;
                Assert.AreEqual(34, DesignPatterns.Singleton<Account>.Instance.Number);
            }
        }
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!