我想在静态字典中保留一些对象(用作内存中对象的工厂),并避免每次请求操作时进行实例化。工厂中的对象(内存中的对象)没有任何状态,依赖项从外部传递。我想仔细检查这里是否涉及线程安全问题,示例代码如下:
public interface IDataValidator
{
bool Validate(long identifier);
}
public class ValidatorLocator
{
private static readonly Dictionary<string, IDataValidator> DataValidators = new Dictionary<string, IDataValidator>
{
{ "binary", new BinaryDataValidator()},
{ "hex", new HexDataValidator()}
};
public static IDataValidator GetDataValidator(string valType)
{
return DataValidators.ContainsKey(valType) ? DataValidators[valType] : null;
}
}
public class HexDataValidator : IDataValidator
{
public bool Validate(long identifier)
{
//evaluate business logic
return true;
}
}
public class BinaryDataValidator : IDataValidator
{
public bool Validate(long identifier)
{
//evaluate business logic
return true;
}
}
请说明我是否正在前往任何灾难,并且非常感谢任何快速指导。对线程有点怀疑(从ASP.Net请求线程的角度来看,这看起来如何?)
答案 0 :(得分:2)
您的示例代码是线程安全的: