WEB开发网
开发学院软件开发C语言 适合C# Actor的消息执行方式(4):阶段性总结 阅读

适合C# Actor的消息执行方式(4):阶段性总结

 2010-09-30 20:50:18 来源:WEB开发网   
核心提示: 接口、协议及消息消息,其实是两个Actor之间定下的协议,适合C# Actor的消息执行方式(4):阶段性总结(6),一个Actor可以实现多种协议,这样的对应关系使人联想到.NET中的接口,还为我们带来“消息组”这样一种简单的消息管理方式——似乎

接口、协议及消息

消息,其实是两个Actor之间定下的协议,一个Actor可以实现多种协议。这样的对应关系使人联想到.NET中的接口。因此我们可以使Actor实现某个接口,一条消息其实就是使用“委托”来告诉Actor该做什么事情。一个“委托”对象也可以自然地携带执行时所用的数据。这似乎满足我们的要求。使用这种方式来实现的消息执行大概是这样的:

interface IPersonMessageHandler 
{ 
  void Chat(Person another, Topic topic); 
  void Eat(Restaurant restaurant); 
  void Work(Person reportTo, Job job); 
} 
 
class Person : Actor<Action<IPersonMessageHandler>>, IPersonMessageHandler 
{ 
  protected override void Receive(Action<IPersonMessageHandler> message) 
  { 
    message(this); 
  } 
 
  #region IPersonMessageHandler Members 
 
  void IPersonMessageHandler.Chat(Person another, Topic topic) { ... } 
 
  void IPersonMessageHandler.Eat(Restaurant restaurant) { ... } 
 
  void IPersonMessageHandler.Work(Person reportTo, Job job) { ... } 
 
  #endregion 
}

图示如下:

适合C# Actor的消息执行方式(4):阶段性总结

使用这种方式似乎带来的许多好处,例如我们使用接口这个非常轻量级的特性实现了消息,无须编写额外的代码将消息转化为逻辑。此外,接口是强类型的,适合编译期检查,易于重构和单元测试,还为我们带来“消息组”这样一种简单的消息管理方式——似乎就是我们理想的消息执行方式啊。是啊,这是很美好的消息执行方式,但是……为什么说它“中看不中用”?

上一页  1 2 3 4 5 6 7 8  下一页

Tags:适合 Actor 消息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接