单例:只存在唯一的一个实例。
1 /// <summary> 2 /// 单例模式。 3 /// </summary> 4 public class Singleton 5 { 6 // 该字段负责存储 Singleton 的唯一实例。 7 private static Singleton s_singleton = null; 8 9 /// <summary> 10 /// 私有构造器,不允许其它类调用。 11 /// </summary> 12 private Singleton() 13 { 14 } 15 16 /// <summary> 17 /// 获取 <see cref="Singleton"/> 的新实例。 18 /// </summary> 19 /// <returns><see cref="Singleton"/> 的新实例。</returns> 20 public static Singleton GetInstance() 21 { 22 if (s_singleton != null) return s_singleton; 23 24 Singleton tmp = new Singleton(); 25 Interlocked.CompareExchange(ref s_singleton, tmp, null); 26 return s_singleton; 27 } 28 }
单态:可以有多个实例,但它们共享相同的状态。
1 /// <summary> 2 /// 单态模式。 3 /// </summary> 4 public class Monostate 5 { 6 // 该类的所有实例,共享这个静态字段的值。 7 private static Int32 s_state = 0; 8 9 /// <summary> 10 /// 获取状态信息。 11 /// </summary> 12 /// <returns>状态信息。</returns> 13 public Int32 GetState() 14 { 15 // 这里可以处理其它事情。 16 return (s_state + 5); 17 } 18 }
完。