单例(Singleton)模式

using System;

**namespace** DesignPatters.Singleton
{
    **public** **class** Singleton
    {
        **public** **static** Singleton Instance()
        {
            **if** (_instance == null)
            {
                **lock** ( **typeof** (Singleton))
                {
                    **if** (_instance == null)
                    {
                        _instance = **new** Singleton();
                    }
                }
            }

            **return** _instance;
        }

        **public** **int** NextValue()
        {
            **return** ++count;
        }

        **protected** Singleton(){}
        **private** **static** **volatile** Singleton _instance = null;
        **private** **int** count = 0;
    }

    **public** **class** MainClient
    {
        [STAThread]
        **static** **void** Main()
        {
            Singleton sg1 = Singleton.Instance();

            **for** ( **int** i = 0; i < 20; i++)
                Console.WriteLine("Next Value: {0}",
                        sg1.NextValue() + " - sg1");

            Singleton sg2 = Singleton.Instance();

            Console.WriteLine("Next Value: {0}",
                    sg2.NextValue() + " - sg2");
        }
    }
}
Published At
Categories with Web编程
Tagged with
comments powered by Disqus