我有一个 C# 类,它具有一些我想允许该类的客户端覆盖的功能。具体来说,我想要以下内容:
- 如果客户端什么都不做,他们会得到我们的默认行为
- 客户端可以覆盖该行为并导致我们的默认行为不被调用。
- 客户端可以覆盖该行为并导致我们的默认行为被称为前/后/中间操作。
我目前的想法是:
- 如果客户想要覆盖该行为,则公开一个客户将订阅的事件。
- 公开具有默认行为的方法(与事件的签名匹配):
void DefaultBehavior()
每当我们尝试触发事件时,如果委托为空,我们调用我们的默认行为方法,否则,我们调用事件的委托:
if (eventDelegate == null) DefaultBehavior(); else eventDelegate();
当客户端覆盖行为时,他们可以选择调用我们的 DefaultBehavior 方法来获得所需的行为。
从客户的角度来看,您认为这种方法是否足够直观?或者您能提出任何可能更好的替代方案吗?