您好我有兴趣实现一个返回单个对象的方法.我已经创建了一个基于MSDN上的示例的实现,但我不确定我的实现是否是corect.
代码运行得很好,但我不知道如何检查它是否是相同的对象实例.
这是我的代码:
public class FileShareAccessFactory : IFileShareAccessFactory
{
private volatile static IFileShareAccess m_fileShareAccess;
private static object m_SyncRoot = new object();
public IFileShareAccess GetFileShareAccessInstance(IContextFactory contextFactory, ILogger logger)
{
if (m_fileShareAccess == null)
{
lock (m_SyncRoot)
{
if (m_fileShareAccess == null)
{
m_fileShareAccess = new FileShareAccess(contextFactory, logger);
}
}
}
return m_fileShareAccess;
}
}
Run Code Online (Sandbox Code Playgroud)
正如经过双重检查的实施一样,是的 - 这样就行了.它甚至不需要volatile,因为同步的双重检查将处理任何少量的"这是一个错误的null读取".就个人而言,我更关心的是它似乎并不尊重API - 即如果我问一个实例是否指定了特定的上下文工厂和记录器,它实际上给了我一些使用不相关的上下文的东西 - 工厂和记录器.坦率地说,还有IoC/DI容器,您可以将其卸载到.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |