Chinaunix首页 | 论坛 | 博客
  • 博客访问: 351725
  • 博文数量: 157
  • 博客积分: 3001
  • 博客等级: 中校
  • 技术积分: 1330
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 13:47
文章分类

全部博文(157)

文章存档

2011年(1)

2010年(28)

2009年(124)

2008年(4)

我的朋友

分类: WINDOWS

2009-08-07 16:49:28

单例模式可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计中,有很多情况需要确保一个类只能有一个实例.从这句话可以看出,Singleton模式的核心:如何控制用户使用new对一个类的实例构造器的任意调用。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?这应该是类设计者的责任,而不是使用者的责任。

  一、单例模式意图

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

  二、单例模式UML图(该图来至)

解读设计模式----单例模式(Singleton Pattern)

  三、示例解说单例模式

  看看下面这个简单的示例: 

1namespace DesignPattern.Singleton
2{
3  public class Singleton
4  {
5    //静态私有属性
6    private static Singleton instance;
7
8    ///


9    /// 私有构造器--让类的使用者调用不到此构造器
10    ///

11    private Singleton()
12    { }
13
14    public static Singleton Instance
15    {
16      get
17      {
18        if (instance == null)
19        {
20          instance = new Singleton();
21        }
22        return instance; //返回的总是第一次实例的对象
23      }
24    }
25  }
26
27  //测试类
28  class TestSingleton
29  {
30    public static void Main2(string[] args)
31    {
32      Singleton t1 = Singleton.Instance;
33      Singleton t2 = Singleton.Instance;
34      Console.WriteLine(object.ReferenceEquals(t1, t2) == true);
35    }
36  }
37}
   提供一个静态的私有属性,并提供get来实现一个简单的单例.此外我们还可以通过静态只读属性来实现.看看下面这个MSDN上提供的示例:

阅读(2012) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~