依赖EventHandler订单调用好吗?

时间:2012-07-01 08:36:45

标签: c# event-handling

我的设计中有三方:

  • MSFT订单
  • 纳斯达克指数(需要在MSFT订单更改时重新计算)
  • MSFT策略(需要在MSFT订单或纳斯达克指数变化时重新计算)

所以我将NASDAQ indexMSFT strategy同时附加到MSFT orderbookmsftOrderBook.OrderbookUpdated += orderbookUpdated;

我还附上MSFT strategy以同样的方式收听NASDAQ index更改。

我有以下问题:

  • 订单很重要。由于我希望在重新计算策略之前重新计算NASDAQ index,因此在附加NASDAQ index之前,我应将orderBook附加到strategy。这是潜在的错误,因为我没有简单的机制来“保证”我按正确的顺序附加......
  • 更新MSFT订单时,会通知NASDAQ index NASDAQ indexMSFT orderbook通知MSFT strategy有关更新的信息。所以MSFT strategy会收到双倍更新,但我不需要。我只想要一次更新,因为预计当MSFT订单更改时,纳斯达克指数也会发生变化。

问题:

  • 依赖EventHandler来电的顺序是否合适?如果不好的话,我的问题会有什么解决方案吗?
  • 关于第二点我只想在MSFT strategy MSFT orderBook更新中忽略,因为策略知道每次订单更新时,NASDAQ索引也会更新,因此仅对NASDAQ索引更新做出反应就足够了。但可能你可以提出一些完全不同的东西......

1 个答案:

答案 0 :(得分:1)

似乎很清楚:

  
      
  • MSFT订单
  •   
  • 纳斯达克指数(需要在MSFT订单更改时重新计算)
  •   
  • MSFT策略(需要在MSFT订单或纳斯达克指数变化时重新计算)
  •   

一起
  
      
  • 我希望在重新计算战略之前重新计算纳斯达克指数
  •   

意味着MSFT策略取决于NASDAQ指数,并且仅间接依赖于MSFT订单 因此,这要求策略可以订阅纳斯达克指数的Changed事件。

我赞成采用无事件的方法,但目前尚不清楚这是否可行。


对评论的回应:

class BusinessLayer
{
    public void Update(Type data)
    {
        OrderBook.Update(data);
        NasdaqIndex.Update(OrderBook);
        NasdaqStrategy.Update(NasdaqIndex);
    }
}