4

我有以下几段代码,在我看来,它们似乎是实现观察者模式所需的基本知识。这是标准,还是我做错了什么?

public class LayoutManager
{
    public CormantTimer Timer { get; set; }
}

protected void Page_Init(object sender, EventArgs e)
{
    LayoutManager.Instance.Timer = RefreshAndCycleTimer;
}

public class CormantRadDock : RadDock, ICormantControl<RadDockSetting>
{
    public CormantRadDock()
    {
        LayoutManager.Instance.Timer.TimerEvent += DoTimerRefreshTick;
    }
}

CormantRadDock 对象是动态创建的。RefreshAndCycleTimer 在页面上。

我担心,随着我的项目越来越大,LayoutManager 中会出现大量不相关的控件——只是在那里订阅。这是标准吗?我应该做一些不同的事情吗?

谢谢

4

2 回答 2

1

使用松耦合的事件机制,例如EventAggregator

http://msdn.microsoft.com/en-us/library/ff921122(PandP.20).aspx

于 2011-10-31T22:20:13.287 回答
1

如果您想要松散耦合的消息传递,请不要使用事件,请使用 EventAggregator。Caliburn.Micro 有一个不错的。

http://devlicio.us/blogs/rob_eisenberg/archive/2011/05/30/caliburn-micro-soup-to-nuts-part-8-the-eventaggregator.aspx

EventAggregator 是一种 Mediator 类型模式,它允许发布者和订阅者通过中介工作,从而实现松散耦合的交互。发布者和订阅者不需要相互了解。

寻找使用“弱引用”的 EventAggregator 来克服事件类型模式的经典问题,即 GC 内存泄漏。Caliburn 正是这样做的。

于 2011-10-31T22:21:45.160 回答