ntwo

导航

.Net Framework中使用的模式-Singleton模式

标准结构

singleton

SqlConnectionFactory中的Singleton模式:

sealed class SqlConnectionFactory
{
    public static readonly SqlConnectionFactory SingletonInstance;

    static SqlConnectionFactory()
    {
        SingletonInstance = new SqlConnectionFactory();
    }   	
}

Double Check 版本:

sealed class SqlConnectionFactory
{
    private static volatile SqlConnectionFactory _instance;
    private static object _lock = new object();

    public static SqlConnectionFactory Instance()
    {
        if(_instance == null)
        {
            lock(_lock)
            {
                if(_instance == null)
                {
                    _instance = new SqlConnectionFactory ();
                }
            }
        }

        return _instance;
    }
}

使用volatile关键字禁止编译器对代码进行优化。

.NET平台特定实现:

sealed class SqlConnectionFactory
{
    private SqlConnectionFactory() {}
    public static readonly SqlConnectionFactory Instance = new SqlConnectionFactory();
}

posted on 2010-11-10 17:01  9527  阅读(228)  评论(0编辑  收藏  举报