繁体   English   中英

Singleton的无状态实例方法线程安全性(C#)

[英]Singleton's stateless instance method thread safety (C#)

使Converter成为单例线程安全吗?

public interface IConverter<TFoo, TBar>
    where TFoo : class, new()
    where TBar : class, new()
{
    TFoo ToFoo(TBar q);
    TBar ToBar(TFoo q);
}

public class Converter : IConverter<Foo, Bar>
{
    public Foo ToFoo(Bar b) {return new Foo(b);}
    public Bar ToBar(Foo f) {return new Bar(f);}
}

是的,那绝对很好。 没有状态,因此没有线程安全问题-也没有理由拥有多个实例。 这是一个很自然的单身人士。

当然,可以使用该接口很好,以提高灵活性和可测试性-但是,当您知道要使用该特定实现时,可以使用单例实例。

是的,实现不执行任何依赖状态的操作。

是的,由于该类没有数据成员,因此可以将其设为单例。

由于类太小,您可以仅创建它的静态实例:

public class Converter : IConverter<Foo, Bar> {

  private static _instance = new Converter();

  public static Instance { get { return _instance; } }

  public Foo ToFoo(Bar b) {return new Foo(b);}
  public Bar ToBar(Foo f) {return new Bar(f);}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM