单身实施问题

时间:2011-05-06 14:46:28

标签: c#

依靠IOC Framework实现单例是否更好?我听说双重检查锁定或依赖静态构造函数都不是很好的做法,这是真的吗?

4 个答案:

答案 0 :(得分:1)

在我看来,对象的生命周期应该由上下文决定,而不是由对象的类型强制执行。在一般意义上,不是保证对象“单一性”的方法被认为是不好的做法,而是单例模式本身的使用。

所以,回答你的问题:是的,你应该让IoC容器处理其对象的生命周期。

答案 1 :(得分:0)

也许this answer可能对您有所帮助。它包含线程安全,延迟加载单例的基本模式。

答案 2 :(得分:0)

实现双重检查锁定模式非常简单,而且非常简洁和良好的实践。然而,就像@Andrew Barber所说,不正确地实施它可能会很痛苦。

if(_instance == null)
{
    lock(_myLockObject)
    {
         if(_instance == null)
            _instance = new Something();
    }
}

return _instance;

答案 3 :(得分:0)

作为一般规则的对象生存期应始终由IOC容器处理。

手动对象生命周期处理容易出现开发人员错误,SRP违规和严重干扰。