一定义: 单例模试的意思就是只有一个实例,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
二UML类图:
三模试角色与结构:
Singleton:负责创建单例并向整个系统提供这个单例。
四程序举例:
1、双重锁定实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Singleton
{
class Singleton
{
static Singleton s;
private Singleton() { }
static object o= new object();
public static Singleton GetInstance()
{
if (s == null)
{
lock(o)
{
if (s == null)
s = new Singleton();
}
}
return s;
}
}
}
2、静态初始化实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Singleton
{
class Singleton2
{
static readonly Singleton2 s= new Singleton2();
private Singleton2() { }
public static Singleton2 GetInstance()
{
return s;
}
}
}
Client端代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Singleton
{
class Client
{
static void Main(string[] args)
{
Singleton s1= Singleton.GetInstance();
Singleton s2 = Singleton.GetInstance();
if (s1 == s2)
{
Console.WriteLine("s1与s2是两个相同的对象!");
}
Singleton2 s21 = Singleton2.GetInstance();
Singleton2 s22 = Singleton2.GetInstance();
if (s21 == s22)
{
Console.WriteLine("s21与s22是两个相同的对象");
}
}
}
}
显示效果: