一、单件模式的意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
二、应用场景
l 每台计算机可以有若干个打印机,但只能有一个Printer Spooler,避免两个打印作业同时输出到打印机。
(摘自吕震宇的C#设计模式(7)-Singleton Pattern)
l PC机中可能有几个串口,但只能有一个COM1口的实例。
l 系统中只能有一个窗口管理器。
l .NET Remoting中服务器激活对象中的Sigleton对象,确保所有的客户程序的请求都只有一个实例来处理。
三、实例
1
1public sealed class Spooler
2
2{
3
3 static Spooler instance=null;
4
4
5
5 private Spooler()
6
6 {
7
7 }
8
8
9
9 public static Spooler Instance
10
10 {
11
11 get
12
12 {
13
13 if (instance==null)
14
14 {
15
15 instance = new Spooler();
16
16 }
17
17 return instance;
18
18 }
19
19 }
20
20}
1public sealed class Spooler 2
2{3
3 static Spooler instance=null;4
45
5 private Spooler()6
6 {7
7 }8
89
9 public static Spooler Instance10
10 {11
11 get12
12 {13
13 if (instance==null)14
14 {15
15 instance = new Spooler();16
16 }17
17 return instance;18
18 }19
19 }20
20}
或
1
sealed class Singleton
2
{
3
private Singleton();
4
public static readonly Singleton Instance=new Singleton();
5
}
sealed class Singleton2
{3
private Singleton();4
public static readonly Singleton Instance=new Singleton();5
}
以上两个实例产生的效果相同.但存在多线程时的并发性,安全性, 无法实现延迟初始化等问题.可以查看一下两个网页来了解更多单件模式的知识.
http://terrylee.cnblogs.com/archive/2005/12/09/293509.html
http://www.cnblogs.com/birdshover/archive/2006/06/15/424656.aspx


浙公网安备 33010602011771号