.Net Framework中使用的模式-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(); }