在我的项目中,我有多个"服务"静态类,应该可以在整个项目中轻松访问,因此它们是静态的.但是,要初始化它们,我必须传递它们仅在启动时可用的数据,这导致代码类似于:
public static class VisualStudioEvents
{
private static Data _data;
public static void Initialize(Data data)
{
_data = data;
}
public static void Func()
{
AssertInitialized(_data);
// Code of actual Func() goes here.
}
}
Run Code Online (Sandbox Code Playgroud)
你觉得怎么样?这里应该应用不同的设计模式吗?或者这个设计可以接受吗?
谢谢!
我对此非常满意.我所做的唯一改变就是将其强制执行一次:
public static void Initialize(Data data)
{
if (data == null) throw new ArgumentNullException("data");
if (Interlocked.CompareExchange(ref _data, data, null) != null)
{
throw new InvalidOperationException("Already initialized");
}
}
Run Code Online (Sandbox Code Playgroud)
哦 - 我猜Data也应该是不可改变的,以避免人们意外地改变配置.
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |