单件模式概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

我之前的概念搞混了,以为只要一个实例就是单件模式。它最主要的是提供一个访问它的全局访问点,也就是多次访问,一个类的实例地址。

代码如下:

using System;

namespace GlobalSpooler
{
    /// <summary>
    /// Summary description for Spooler.
    /// </summary>
    public class Spooler     {
        private static Spooler MySpooler ;
        private static bool instance_flag= false;
        private Spooler()  {
            instance_flag = true;
        }
        public static Spooler getSpooler() {
            if (! instance_flag) 
                MySpooler = new Spooler ();
             return MySpooler;
        }

    }
}

Main访问代码

using System;

namespace GlobalSpooler
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class GlobSpooler
    {
        static void Main(string[] args)
        {
            Spooler sp1 = Spooler.getSpooler();
            if (sp1 != null)
                Console.WriteLine("Got 1 spooler");
            Spooler sp2 = Spooler.getSpooler();
            if (sp2 == null)
                Console.WriteLine("Can\'t get spooler");

           if (sp1==sp2)
             Console.WriteLine ("They are same.");
          else
            Console.WriteLine ("They are not same.");

            //fails at compile time
            //Spooler sp3 = new Spooler();
        }
    }
}

 

 

 

posted on 2014-02-20 22:24  chinaagan  阅读(142)  评论(0编辑  收藏  举报