单件模式(Singleton)的延迟初始化(Lazy Initialization)和(Early initialization)
单件模式(Singleton)核心是:
1、静态方法、静态成员的使用。
使用静态成员变量保存“全局”的实例,确保了唯一性,使用静态的成员方法instance() 代替 new关键字来获取该类的实例,达到全局可见的效果。
2、将构造函数设置成为private,
如果使用new关键字创建类的实例,则编译报错,以防编程时候笔误。
对于单件的初始化.可以有(Lazy Initialization)和(Early initialization)两种方法。
Early initialization 就类似下面C#的伪代码:
using System;
namespace csPattern.Singleton
{
public class Singleton
{
static Singleton uniSingleton = new Singleton();
private Singleton() {}
static public Singleton instance()
{
return uniSingleton;
}
}
}
Lazy Initialization 就类似下面C# 的伪代码:
using System;
namespace csPattern.Singleton
{
public class Singleton
{
static Singleton uniSingleton;
private Singleton() {}
static public Singleton instance()
{
if (null == uniSingleton)
{
uniSingleton = new Singleton _lazy();
}
return uniSingleton;
}
}
}
Lazy Initialization 需要自己手工编码处理多线程并发的时候,以确保多线程并发时候真正的单件。
《Singleton设计模式的C#实现》这篇文章对晚期捆绑提供了三个方法。
这篇文章可以看:
http://kangtr.cnblogs.com/articles/254613.html
这三个方法是:
1、使用 [MethodImpl(MethodImplOptions.Synchronized)]
2、lock(myObject)
3、使用 Mutex 类的 WaitOne 方法。
有关这三个方法更具体的看以上给的文章连接。

浙公网安备 33010602011771号