依靠IOC Framework实现单例是否更好?我听说双重检查锁定或依赖静态构造函数都不是很好的做法,这是真的吗?
答案 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违规和严重干扰。