Example #1
0
        public void StartExample()
        {
            Console.WriteLine("Default Realisation");
            var obj1 = DefaultRealisation.GetInstance();
            var obj2 = DefaultRealisation.GetInstance();

            Console.WriteLine($"Object 1: {obj1.CreatingDate}");
            Console.WriteLine($"Object 2: {obj2.CreatingDate}");
            Console.WriteLine($"Object 1 == Object 2: {obj1.Equals(obj2)}");

            Console.WriteLine("Thread safe realisation");
            (new Thread(() =>
            {
                Console.WriteLine($"Thread {ThreadSafeRealisation.GetInstatnce("Windows 10").Name}");
            })).Start();
            Console.WriteLine(ThreadSafeRealisation.GetInstatnce("Windows 8.1").Name);
            Thread.Sleep(1000);

            Console.WriteLine("Lazy realisation");
            var lObj1 = LazyRealisation.GetInstance();
            var lObj2 = LazyRealisation.GetInstance();

            Console.WriteLine($"Object 1: {lObj1.CreatingDate}");
            Console.WriteLine($"Object 2: {lObj2.CreatingDate}");
            Console.WriteLine($"Object 1 == Object 2: {lObj1.Equals(lObj2)}");
        }
        public static ThreadSafeRealisation GetInstatnce(string name)
        {
            if (_instance == null)
            {
                lock (_syncRoot)
                {
                    if (_instance == null)
                    {
                        _instance = new ThreadSafeRealisation
                        {
                            Name = name
                        };
                    }
                }
            }

            return(_instance);
        }