1.1 意图
单件模式保证应用程序全局仅有唯一的一个实例,并且提供一个访问它的全局入口。
1.2 使用场合
输出结果:
single1和single2是同和个实例化的对象!
1
2
如果第一次输出Count的值为1,第二次输出Count的值为2,那么说明single1和single2是同和个实例化的对象!
结论: 单件模式保证应用程序全局仅有唯一的一个实例,并且提供一个访问它的全局入口。
1.6结束.
单件模式保证应用程序全局仅有唯一的一个实例,并且提供一个访问它的全局入口。
1.2 使用场合
当类只能有一个实例存在,并且可以在全局访问。
1.3 静态结构图
单件模式静态结构图如下
A. single: 保存唯一实例对象的静态私有变量。
B. Singleton:防止外部实例化的私有构造方法。
C. 提供全局访问获得唯一实例的公开的静态方法。
1.4 实现代码:
1 public class Singleton
2 {
3 private static Singleton single ;
4 private Singleton()
5 {
6
7 }
8 public static Singleton SingletonInstaller(Singleton single)
9 {
10 if (single == null)
11
12 single = new Singleton();
13 return single;
14 }
15 }
1.5 验证代码:2 {
3 private static Singleton single ;
4 private Singleton()
5 {
6
7 }
8 public static Singleton SingletonInstaller(Singleton single)
9 {
10 if (single == null)
11
12 single = new Singleton();
13 return single;
14 }
15 }
using System;
using System.Collections.Generic;
using System.Text;
namespace ConSingletonDesigner
{
public class Singleton
{
private static Singleton single ;
int count = 0;
private Singleton()
{
}
public static Singleton SingletonInstaller()
{
if (single == null)
single = new Singleton();
return single;
}
public int Count
{
get { return ++count; }
}
}
class Program
{
static void Main(string[] args)
{
Singleton single1 = Singleton.SingletonInstaller();
Singleton single2 = Singleton.SingletonInstaller();
if(single1==single2)
{
Console.WriteLine("single1和single2是同和个实例化的对象!");
}
//再次测试
Console.WriteLine(single1.Count.ToString());
Console.WriteLine(single2.Count.ToString());
Console.WriteLine("如果第一次输出Count的值为1,第二次输出Count的值为2,那么说明single1和single2是同和个实例化的对象!");
Console.Read();
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ConSingletonDesigner
{
public class Singleton
{
private static Singleton single ;
int count = 0;
private Singleton()
{
}
public static Singleton SingletonInstaller()
{
if (single == null)
single = new Singleton();
return single;
}
public int Count
{
get { return ++count; }
}
}
class Program
{
static void Main(string[] args)
{
Singleton single1 = Singleton.SingletonInstaller();
Singleton single2 = Singleton.SingletonInstaller();
if(single1==single2)
{
Console.WriteLine("single1和single2是同和个实例化的对象!");
}
//再次测试
Console.WriteLine(single1.Count.ToString());
Console.WriteLine(single2.Count.ToString());
Console.WriteLine("如果第一次输出Count的值为1,第二次输出Count的值为2,那么说明single1和single2是同和个实例化的对象!");
Console.Read();
}
}
}
输出结果:
single1和single2是同和个实例化的对象!
1
2
如果第一次输出Count的值为1,第二次输出Count的值为2,那么说明single1和single2是同和个实例化的对象!
结论: 单件模式保证应用程序全局仅有唯一的一个实例,并且提供一个访问它的全局入口。
1.6结束.