比如下面的_Context变量就是用了单利模式,下面的代码就是外面想调用_Context时,如果_Context已经实例化,那么直接返回,如果没实例化,就实例化它再返回。全局只有一个_Context
比如
public class EESGateway
{
private static EESDatabaseDataContext _Context = null //EESDatabasDataContex Instance
private const string databaseName = "EESDatabase" //Database name
/// <summary>
/// Return EESDatabaseDataContext instance.
/// </summary>
/// <returns>EESDatabaseDataContext instance</returns>
public static EESDatabaseDataContext DataContext()
{
if (_Context == null)
{
lock (typeof(EESGateway))
{
//formate a new string to store the connectionString
String connectionString = ConfigurationManager.ConnectionStrings["EESDatabase"].ConnectionString
//create a dataContext using the connectionString above
_Context = new EESDatabaseDataContext(connectionString)
}
}
return _Context
}
}
Once 结构体 和 Go()方法都是位于 sync 包下,主要为了保证 Do(func) 中的 func 只执行一次,用于单例模式是比较好的方案。
原理: