【发布时间】:2010-10-14 04:55:42
【问题描述】:
Ted Faison 在podcast on event-based software design 中提到 .NET、C++ 和 Java 事件语句中的“sender”和“self”对象,例如:
private void Button_Click(object sender, RoutedEventArgs e)
是用词不当,因为例如在上面的例子中,“sender”并不是真正产生事件的对象,而是一个代理,因为你不想把你的应用程序耦合得那么紧密。
我是不是理解错了(因为我调试的时候,“sender”确实是原来的对象)。
或者这些语言中的常见事件模式(例如常见的点击处理程序)是紧密耦合的,但它们应该更加解耦,例如在复合应用中。
他还提到过,例如你不应该从 EventArgs 继承,因为它会导致类爆炸,每个事件一个,它只传输几个变量。在他看来,很多时候,你可以发送一个字符串。他提到,这种观点与微软模式和实践所建议的相反。
对这些领域有什么想法吗?
【问题讨论】:
-
+1。好问题。自从我听到那个播客后,我一直在考虑根据我正在开发的系统的总体架构来制作事件。
-
Ted Faison 的《基于事件的编程:将事件发挥到极致》一书可通过books.google.com/…在线获取
-
关于最后一个问题:Ted Faison 大约在 podcat 中谈到了这个问题。 29 分 30 秒,大约35 分钟。