我的设计中有三方:
所以我将NASDAQ index
和MSFT strategy
同时附加到MSFT orderbook
:msftOrderBook.OrderbookUpdated += orderbookUpdated;
我还附上MSFT strategy
以同样的方式收听NASDAQ index
更改。
我有以下问题:
NASDAQ index
,因此在附加NASDAQ index
之前,我应将orderBook
附加到strategy
。这是潜在的错误,因为我没有简单的机制来“保证”我按正确的顺序附加...... MSFT
订单时,会通知NASDAQ index
NASDAQ index
和MSFT orderbook
通知MSFT strategy
有关更新的信息。所以MSFT strategy
会收到双倍更新,但我不需要。我只想要一次更新,因为预计当MSFT订单更改时,纳斯达克指数也会发生变化。问题:
EventHandler
来电的顺序是否合适?如果不好的话,我的问题会有什么解决方案吗?MSFT strategy
MSFT orderBook
更新中忽略,因为策略知道每次订单更新时,NASDAQ索引也会更新,因此仅对NASDAQ索引更新做出反应就足够了。但可能你可以提出一些完全不同的东西...... 答案 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);
}
}