Singleon类:
1
using System;
2
3
namespace Singleton
4
{
5
/// <summary>
6
/// Singleton 的摘要说明。
7
/// </summary>
8
public class Singleton
9
{
10
11
private static Singleton _factory;
12
private static Object _classLock = typeof(Singleton);
13
private long _wipMoves;
14
private Singleton()
15
{
16
_wipMoves = 0;
17
}
18
public static Singleton GetFactory()
19
{
20
lock (_classLock)
21
{
22
if (_factory == null)
23
{
24
_factory = new Singleton();
25
}
26
return _factory;
27
}
28
}
29
public void RecordWipMove()
30
{
31
lock (_classLock)
32
{
33
_wipMoves++;
34
}
35
}
36
// for the Aster star press example; not implemented
37
public void CollectPaste()
38
{
39
Console.Write(_wipMoves+"\n");
40
}
41
42
/// <summary>
43
/// Return an example list of "up" machines, supporting "ShowConcurrentWhile"
44
/// and other examples).
45
/// </summary>
46
/// <returns>an example list of "up" machines</returns>
47
48
}
49
}
50
51
52

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

主程序:
1
using System;
2
3
namespace Singleton
4
{
5
/// <summary>
6
/// Class1 的摘要说明。
7
/// </summary>
8
class Class1
9
{
10
/// <summary>
11
/// 应用程序的主入口点。
12
/// </summary>
13
[STAThread]
14
static void Main(string[] args)
15
{
16
//
17
// TODO: 在此处添加代码以启动应用程序
18
//
19
20
Singleton singleton =Singleton.GetFactory();
21
singleton.RecordWipMove();
22
singleton.RecordWipMove();
23
24
Singleton singleton1 =Singleton.GetFactory();
25
singleton1.RecordWipMove();
26
singleton1.RecordWipMove();
27
28
singleton.CollectPaste();
29
singleton1.CollectPaste();
30
Console.WriteLine(object.ReferenceEquals(singleton, singleton1) == true);
31
32
Console.ReadLine();
33
}
34
}
35
}
36

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
