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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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