[技术回顾系列]--单件模式

定义:
Singleton模式主要作用是保证在应用程序中,一个类只有一个实例存在。
在很多操作中比如建立目录,数据库连接都需要这样的单线程操作。还有 Singleton能够被状态化; 这样多个单件类在一起就可以象一个状态仓库一样向外提供服务,比如你要论坛中的帖子计数器,每次浏览一次需要计数,单件类能否保持住这个计数,如果你要把这个数字永久保存到数据库,你可以在不修改单件接口的情况下方便的做到。另外方面Singleton也能够被无状态化。提供工具性质的功能,Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于垃圾回收,我们常常看到工厂模式中也会包含Singleton模式,因为被载入的类实际也属于资源。
如何使用?
一般Singleton模式有很多实现方式,下面仅仅说明一种通用的。

 1using System;
 2
 3namespace ClassLibrary1
 4{
 5    /// <summary>
 6    /// Summary description for Class1.
 7    /// </summary>

 8    public class Singleton 
 9    {
10
11  private Singleton()
12    {}
13  //在自己内部定义自己一个实例,是不是很奇怪?
14  //注意这是private 只供内部调用
15  private static Singleton instance = new Singleton();
16  //这里提供了一个供外部访问本class的静态方法,可以直接访问  
17  public static Singleton getInstance() 
18    {
19    return instance;   
20   }
 
21
22    }

23}

24

使用Singleton注意事项
有时在某些情况下,使用Singleton并不能达到Singleton的目的,如有多个Singleton对象同时被不同的类装载就会面临很多问题。所以
Singleton模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对类、线程、内存等概念有相当的了解。
以前的一篇:设计模式[创建型]之单件模式

posted on 2007-05-25 11:17  kim  阅读(443)  评论(0编辑  收藏  举报

导航