单例实现问题
本文关键字:问题 实现 单例 | 更新日期: 2023-09-27 17:55:23
依靠IOC框架来实现单例更好吗?我听说双重检查锁定或依赖静态构造函数都不是好的做法,这是真的吗?
在我看来,对象的生存期应该由上下文创建它决定,而不是由对象的类型强制执行。在常识中,不是保证对象的"单例性"的方法被认为是不好的做法,而是单例模式本身的使用。
因此,要回答您的问题:是的,您应该让 IoC 容器处理其对象的生存期。
也许这个答案可能对你有所帮助。它包含线程安全、延迟加载的单例的基本模式。
实现双重检查锁定模式非常简单,而且非常简洁且很好的做法。然而,就像@Andrew巴伯所说,不正确地实施它可能会很痛苦。
if(_instance == null)
{
lock(_myLockObject)
{
if(_instance == null)
_instance = new Something();
}
}
return _instance;
作为一般规则,对象生存期应始终由 IOC 容器处理。
手动对象生存期处理容易出现开发人员错误、SRP 违规和广泛的 DRY 违规。