1

在我的设计中有三方:

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

所以我附上两者NASDAQ indexMSFT strategy喜欢MSFT orderbook这样:msftOrderBook.OrderbookUpdated += orderbookUpdated;

我也附上MSFT strategy以同样的方式倾听NASDAQ index变化。

我有以下问题:

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

问题:

  • 依赖EventHandler调用顺序好不好?如果它不好,我的问题的一般解决方案是什么?
  • 关于第二点,我只想在MSFT strategy MSFT orderBook更新中忽略,因为策略知道每次更新 orderBook 时纳斯达克指数也会更新,因此仅对纳斯达克指数更新做出反应就足够了。但也许你可以建议一些完全不同的更好的东西..
4

1 回答 1

1

似乎很清楚:

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

和...一起

  • 因为我希望在重新计算策略之前重新计算纳斯达克指数

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

不过,我倾向于采用没有事件的方法,但尚不清楚这是否可行。


回复评论:

class BusinessLayer
{
    public void Update(Type data)
    {
        OrderBook.Update(data);
        NasdaqIndex.Update(OrderBook);
        NasdaqStrategy.Update(NasdaqIndex);
    }
}
于 2012-07-01T09:34:06.820 回答