单件模式
2008-07-30 14:40
281 查看
public sealed class SingleClass
{
static SingleClass oSingleClass=null;
static readonly object padlock = new object();
public static SingleClass GetSingleClass
{
get
{
lock (padlock)
{
if(oSingleClass==null)
{
oSingleClass = new SingleClass();
}
return oSingleClass;
}
}
这种方式的实现对于线程来说是安全的。我们首先创建了一个进程辅助对象,线程在进入时先对辅助对象加锁然后再检测对象是否被创建,这样可以确保只有一个实例被创建,因为在同一个时刻加了锁的那部分程序只有一个线程可以进入。这种情况下,对象实例由最先进入的那个线程创建,后来的线程在进入时(instence == null)为假,不会再去创建对象实例了。但是这种实现方式增加了额外的开销,损失了性能。
应该很好理解。不能使用new来生成类。只能用静态的方法。
静态方法里只能调用静态成员。
{
static SingleClass oSingleClass=null;
static readonly object padlock = new object();
public static SingleClass GetSingleClass
{
get
{
lock (padlock)
{
if(oSingleClass==null)
{
oSingleClass = new SingleClass();
}
return oSingleClass;
}
}
这种方式的实现对于线程来说是安全的。我们首先创建了一个进程辅助对象,线程在进入时先对辅助对象加锁然后再检测对象是否被创建,这样可以确保只有一个实例被创建,因为在同一个时刻加了锁的那部分程序只有一个线程可以进入。这种情况下,对象实例由最先进入的那个线程创建,后来的线程在进入时(instence == null)为假,不会再去创建对象实例了。但是这种实现方式增加了额外的开销,损失了性能。
应该很好理解。不能使用new来生成类。只能用静态的方法。
静态方法里只能调用静态成员。
相关文章推荐
- 设计模式(六):Singleton 单件模式 -- 创建型模式
- 单件模式Singleton Pattern
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 设计模式-单件模式
- 关于动态单例设计模式或动态单件设计模式—Singleton
- 单件模式(Singleton创建型)c#简单例子
- 【设计模式】单件
- 闲话单件模式
- VB.net设计模式之单件模式(singleton)
- 设计模式学习笔记(8):单件模式
- 单件模式之土著人的可乐瓶
- 单件模式(Singleton)的变体Meyers模式
- 单件模式与智能指针、友元类的结合
- JavaScript设计模式之单件模式介绍
- 设计模式(二)单件模式Singleton(创建型)
- 设计模式 之 单件模式
- 3.单件模式
- 单件模式(Singleton Pattern)(二):HeadFirst中的巧克力工厂的设计
- 单件模式之PHP实现