正确使用单例模式

埃德蒙森

我有一个只BillLines创建一个实例的要求,这对于单例模式当然是完美的。

看着Jon的Skeet的帖子,我不太了解在哪里创建我的“新”对象(即有用的对象,而不是抽象的Singleton对象)。

这对您来说是否正确?

public sealed class ContextSingleton
{
    private static readonly Lazy<ContextSingleton> Lazy =
        new Lazy<ContextSingleton>(() => new ContextSingleton());

    public static ContextSingleton Instance { get { return Lazy.Value; } }

    private ContextSingleton()
    {
    }

    //Is this correct?  Where should I 'new' this?
    public readonly IBillLineEntities Context = new BillLines.BillLines();
}

像这样被访问:

var contextSingleton = ContextSingleton.Instance.Context;

更新资料

我无权访问的内部,BillLines但我需要确保仅存在其中一个实例。

埃德蒙森

感谢@JonSkeet和@RobH的评论,我走下了依赖注入路线。我选择了Ninject,并且按预期完成了工作:

public class NinjectBindings : NinjectModule
{
    public override void Load()
    {
        Bind<IBillLineEntities>.To<BillLines.BillLines>().InSingletonScope();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用单例模式

来自分类Dev

在海边/闲话中正确使用单例模式

来自分类Dev

单例模式:使用枚举版本

来自分类Dev

使用单例模式的JavaScript函数链接

来自分类Dev

在python中,如何使用单例模式?

来自分类Dev

在python中,如何使用单例模式?

来自分类Dev

使用单例模式的JavaScript函数链接

来自分类Dev

三类使用的单例模式

来自分类Dev

使用单例模式打开新的winform

来自分类Dev

ndb单例模式

来自分类Dev

单例模式说明

来自分类Dev

单例设计模式

来自分类Dev

实现单例模式

来自分类Dev

在Spring中使用Java单例模式(对单例的静态访问)

来自分类Dev

在Spring中使用Java单例模式(对单例的静态访问)

来自分类Dev

不使用单例模式有什么问题

来自分类Dev

使用boost :: call_once的C ++单例模式

来自分类Dev

以统一单例模式使用admob奖励广告

来自分类Dev

使用单例设计模式进行序列化

来自分类Dev

如何将单例模式与依赖注入结合使用?

来自分类Dev

无法理解如何使用单例模式?

来自分类Dev

为 DBContext 使用单例模式的更好方法

来自分类Dev

单例模式在 Swift 中使用得好吗?

来自分类Dev

C#单例模式

来自分类Dev

单例模式性能问题

来自分类Dev

单例模式-默认属性

来自分类Dev

设计模式:单例混淆

来自分类Dev

Swift:重构单例模式

来自分类Dev

Hadoop单例模式的用法