您的位置:首页 > 其它

[笔记]01Singleton 单件(创建型模式)

2011-12-12 22:03 274 查看
动机(Motivation)

一些特殊的类 只存在一个实例(确保他们的逻辑正确性)

这个应该是类设计者的责任,而不是使用者的责任。

如何绕过常规的构造器?提供一种机制保证一个类只有一个实例?

意图(Intent)

确保一个类只有一个实例。

单线程Singleton模式实现

class Singleton
{
private static Singleton instance;

private Singleton()
{

}

public static Singleton Instance
{
get
{
if(instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}

构造器可以设置为protected以允许子类派生
不要支持ICloneable接口
不要支持序列化
缺点是,不能应对多线程的情况

这个模式,我们只考虑了对象的创建而没有考虑对象的销毁

多线程实现

class MulThreadSingleton
{
private static volatile MulThreadSingleton instance = null;

private static Object lockHelper = new Object();

private MulThreadSingleton()
{

}

public static MulThreadSingleton Instance
{
get
{
if(instance == null)
{
lock(lockHelper)
{
if(instance == null)
{
instance = new MulThreadSingleton();
}
}
}
return instance;
}
}
}


使用静态构造器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: