C#设计模式之Singleton

2009年3月28日星期六

C#设计模式之Singleton

名称:Singleton

  结构:


  


  意图:


  保证一个类仅有一个实例,并提供一个访问它的全局访问点。


  适用性 :


  当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。


  当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。


  示例代码:


  // Singleton


  namespace Singleton_DesignPattern


  {


  using System;


  class Singleton


  {


  private static Singleton _instance;


  public static Singleton Instance()


  {


  if (_instance == null)


  _instance = new Singleton();


  return _instance;


  }


  protected Singleton(){}


  // Just to prove only a single instance exists


  private int x = 0;


  public void SetX(int newVal) {x = newVal;}


  public int GetX(){return x;}


  }


  ///


  /// Summary description for Client.


  ///


  public class Client


  {


  public static int Main(string[] args)


  {


  int val;


  // can''t call new, because constructor is protected


  Singleton FirstSingleton = Singleton.Instance();


  Singleton SecondSingleton = Singleton.Instance();


  // Now we have two variables, but both should refer to the same object


  // Let''s prove this, by setting a value using one variable, and


  // (hopefully!) retrieving the same value using the second variable


  FirstSingleton.SetX(4);


  Console.WriteLine("Using first variable for singleton, set x to 4");


  val = SecondSingleton.GetX();


  Console.WriteLine("Using second variable for singleton, value retrieved = ", val);


  return 0;


  }


  }


  }


0 评论:

发表评论