单例模式,其实这个模式运用时相当广泛的,如果仁兄你可能不懂设计模式,但是你的代码中却可能用过单例模式。单例模式的关键点就在单。从某些方面来说,我们可以把常量看过一种单例模式,即单例模式只有一个实例,每次引用都是相同的对象。
在GOF中,单例模式是创建型模型,对于单例模式,我们一般基于一个全局变量来实现:

  1. public class People        //类名 
  2.    { 
  3.        private static string name;    //字段 
  4.  
  5.        private People() //构造函数 
  6.        { 
  7.  
  8.        } 
  9.  
  10.        public static string GetName()    // 函数 
  11.        { 
  12.            if (string.IsNullOrEmpty(name)) 
  13.            { 
  14.                name = "my name"
  15.            } 
  16.            return name; 
  17.  
  18.  
  19.        } 
  20.  
  21.  
  22.  
  23.    } 

在上述代码中我们通过一个static变量和私有构造函数来保证我们通过GetName函数取的值是同一个字符串。

String类型虽然是值类型的,但是只不过是将原本引用类型的string经过特殊处理让他具备值类型的特点而已,在这里我们依然将其当做引用类型。

另外,单例模式和享元模式是不同的:

  1. 享元模式是结构型模式,单例模式是创建型模式
  2. 单例模式是保证对象的唯一的实例,而享元模式是让每个轻量级的对象在内存中只有一个,实现过程中主要是要为共享对象提供一个存放的“仓库”(对象池)。