适合C# Actor的消息执行方式(4):阶段性总结
2010-09-30 20:50:18 来源:WEB开发网接口、协议及消息
消息,其实是两个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
}
图示如下:
使用这种方式似乎带来的许多好处,例如我们使用接口这个非常轻量级的特性实现了消息,无须编写额外的代码将消息转化为逻辑。此外,接口是强类型的,适合编译期检查,易于重构和单元测试,还为我们带来“消息组”这样一种简单的消息管理方式——似乎就是我们理想的消息执行方式啊。是啊,这是很美好的消息执行方式,但是……为什么说它“中看不中用”?
- ››适合做商品团购营销的网站
- ››适合所有浏览器hack的CSS技巧
- ››消息称中国移动即将获得iPhone 4销售权
- ››适合C# Actor的消息执行方式(1):Erlang中的模式...
- ››适合C# Actor的消息执行方式(2):C# Actor的尴尬...
- ››适合C# Actor的消息执行方式(3):中看不中用的解...
- ››适合C# Actor的消息执行方式(4):阶段性总结
- ››适合C# Actor的消息执行方式(5):一个简单的网络...
- ››适合C# Actor的消息执行方式(6):协变与逆变
- ››适合1-5个月经验的seo优化全过程分享
- ››消息称联通高层赴美谈引入iPhone4 将带WiFi
- ››消息称微软将在近期发布IE9 beta
更多精彩
赞助商链接