[技术回顾系列]--单件模式
定义:
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
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模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对类、线程、内存等概念有相当的了解。
以前的一篇:设计模式[创建型]之单件模式