單件模式概念:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。spa
我以前的概念搞混了,覺得只要一個實例就是單件模式。它最主要的是提供一個訪問它的全局訪問點,也就是屢次訪問,一個類的實例地址。code
代碼以下:blog
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訪問代碼ip
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(); } } }