volatile statique J'ai une usine d'Implémentation session pour être singleton comme ceci:Gardez ISessionFactory
public sealed class MySessionFactory
{
private static volatile MySessionFactory _instance;
private ISessionFactory _sessionFactory;
private static volatile object _locker = new object();
private MySessionFactory()
{
}
public MySessionFactory Intance
{
get
{
if (_instance != null)
return _instance;
lock (_locker)
{
if (_sessionFactory == null)
{
_instance = new MySessionFactory();
}
}
return _instance;
}
}
public ISession OpenSession()
{
if (_sessionFactory != null)
return _sessionFactory.OpenSession();
lock (_locker)
{
if (_sessionFactory == null)
{
var cfg = FluentNHibernate.Cfg.Fluently.Configure()
.Database(FluentNHibernate.Cfg.Db.PostgreSQLConfiguration.Standard.ConnectionString("connectionString").UseReflectionOptimizer())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsAssembly>());
_sessionFactory = cfg.BuildSessionFactory();
}
}
return _sessionFactory.OpenSession();
}
}
Si je supprime la volatilité de _instance variable statique, je vais obtenir des avantages de ce changement? Ou c'est un modèle de bonne pratique?
Si vous utilisez Lazy, vous atteindrez le même but avec un code plus propre, à mon humble avis. –