【问题标题】:Is it a good practice to implement Template Method Pattern via C# events?通过 C# 事件实现模板方法模式是一种好习惯吗?
【发布时间】:2009-07-01 10:57:57
【问题描述】:

我现在试图理解一些代码,我发现了一个模式,这对我来说似乎有点奇怪。有一个带有“EditorOpen”事件的用户控件类。起初,我认为这个名称不正确,因为它不像 MSDN 建议的那样以“-ing”或“-ed”结尾。但是,后来我发现,这个事件并没有通知发生的事情,而是某种请求来执行实际操作。这是客户端代码,预计会执行“打开编辑器”!

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

我认为这很有趣,但我也担心在这种情况下使用事件可能会产生高度误导。无论如何,我们在这里讨论的不是 EVENTS,而是 REQUESTS。嗯...也许没问题,只要事件的名称是“EditorOpeningRequest”或“EditorOpeningRequested”。你怎么看?在代码审查期间你会如何评论这个?

【问题讨论】:

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


    【解决方案1】:

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

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

    HTH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-12
      • 2011-11-15
      • 2017-12-09
      • 2017-02-20
      • 1970-01-01
      • 2013-03-28
      • 2011-10-21
      • 1970-01-01
      相关资源
      最近更新 更多