在找到Lazy<T>类型之前,我使用以下模式来实现全局单例:
class DataModel
{
public static XmlSerializer Serializer
{
get { return SerializerFactory.instance; }
}
static class SerializerFactory
{
internal static readonly XmlSerializer instance =
new XmlSerializer(typeof(DataModel));
}
}
Run Code Online (Sandbox Code Playgroud)
此模式具有以下优点:
最近我发现了很多帖子,建议Lazy<T>实现类似的单例访问模式.Lazy<T>(或LazyInitializer)是否会为此实施带来任何好处?
可读性
这是您的代码在实现时的样子Lazy<T>:
class DataModel
{
private static readonly Lazy<XmlSerializer> lazySerializer =
new Lazy<XmlSerializer>(() => new XmlSerializer(typeof(DataModel)));
public static XmlSerializer Serializer
{
get { return lazySerializer.Value; }
}
}
Run Code Online (Sandbox Code Playgroud)
Lazy<T>的文档就足够了),| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |