我有观察者设计模式,附加/分离所需的观察者是通过静态方法完成的。我故意使用静态方法,因为每个节点的观察者列表在内存方面可能会花费很多。如果从设计的角度来看我错了,请告诉我(使用静态方法和变量是否正确?)。
public static void Attach(FormComponentObserverBase observer)
{
observers.Add(observer);
}
public static void Detach(FormComponentObserverBase observer)
{
observers.Remove(observer);
}
public static void DetachAll()
{
if (observers == null)
{
return;
}
foreach (var o in observers)
{
Detach(o);
}
}
public static void Notify(MyObservedObject c)
{
if (observers == null)
{
return;
}
foreach (var o in observers)
{
o.Update(c);
}
}
观察者正在观察树对象结构。由于树在内存方面很昂贵,我想确保我不会在内存中保留任何额外的东西。我尝试实现 IDisposable 接口并通过 Dispose 方法,我想清理观察者和其他不必要的实例相关对象。就观察者通用列表而言,以下内容是否足以使观察者列表符合垃圾收集条件?
DetachAll();
observers = null;