您的位置:首页 > 其它

对Singleton的实现方法做一个总结

2008-05-10 02:02 274 查看
原帖:
http://www.cnblogs.com/ASPNET2008/archive/2008/05/09/1190328.html
首先直接文章作者及回复中的兄弟提到的两种Singleton方法。

第一种

    public class Singleton
public class Singleton
    public class Singleton
public class Singleton
            public static Singleton _instance = null;

            private Singleton()
            
            }

            public static Singleton CreateInstance()
                            Interlocked.CompareExchange(ref _instance, new Singleton(), null);
                return _instance;
            }
}

因为Interlocked.CompareExchange是一个原子操作, 所以是线程安全的。不过注意那个new Singleton(), 它会不断的被执行。 如果构造的过程很耗费资源, 这是一个问题。 其实利用delegate, 我们可以有一些新玩法, 把包括第二次及以后进入CreateInstance的开销降到最低; 如果谁想到了可以给我留言。(Update: 我的做法放在了第20楼, 注意脑袋回复中提到的问题, 其实这种做法我一般用在别处完成更贴切的任务, 具体分析日后再说了)

最后, 稍加改动, 可以把Singleton成泛型的。不过个人感觉意义不大了, 除非用Singleton的地方太多, 懒得打代码, 也可以考虑。 嗯, 结束了么? 不知道大家觉得这些是不是也一塌糊涂,自己感觉我不太适合写这类文章....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐