通过C#事件实现模板方法模式是一个好习惯吗?

时间:2009-07-01 10:57:57

标签: .net events design-patterns template-method-pattern

我现在正在尝试理解一些代码而且我找到了一个模式,这对我来说有点奇怪。有一个带有'EditorOpen'事件的用户控件类。起初,我认为这个名称是不正确的,因为它不会以'-ing'或'-ed'结尾,正如MSDN建议的那样。然而,后来我发现,这个事件并没有发生关于发生事情的信息,但它实际上是某种REQUEST来进行实际操作。这是客户端代码,预计会执行“打开编辑器”!

我有点惊讶地发现这实际上是某种形式的模板方法设计模式,其中可以有多个动作与单个动作占位符相关联。

我认为这很有意思,但我也担心在这种情况下使用事件可能会产生很大误导。无论如何,我们不是在讨论EVENTS,而是关于REQUESTS。嗯...也许没关系,只要事件的名称是'EditorOpeningRequest'或'EditorOpeningRequested'。你怎么看?您在代码审查期间如何评论这一点?

1 个答案:

答案 0 :(得分:1)

除非你有很好的理由让多个对象处理打开编辑器的请求,否则我建议应该是委托而不是事件。这限制了您拥有一个请求处理程序,在这种情况下似乎更合乎逻辑。

此外,我会将名称更改为OpenEditor,因为这更符合您的预期。如果您坚持使用事件模型,那么OpenEditorRequested可能是一个更好的名称。

HTH。