我目前正在努力解决设计问题,我正在寻找一些建议:) 想象一下我有一个 INotificationHandler 对象的集合,并且接口定义如下:
public interface INotificationHandler
{
void Notify(string message);
}
现在我想为每个 INotificationHandler 实例调用 Notify(...) 。我想为此使用多播委托。然而直到最近我偶然发现了一段代码,其中表达式树用于类似的任务(我想)......不幸的是我不记得我在哪里看到那段代码:(
我主要关心的是性能,因为这种类型的方法调用会非常频繁地发生。 由于它在 Web 应用程序上下文中运行,我可以确定每个实例的方法都被调用了吗?
最终目标是拥有一个单一的“包装”类来调用某种接口类型的所有其他实例。我也想过将其应用于日志记录......
ILogger dispatcher.Trace(...) // does nothing itself, only calls other existing ILogger instances.
--> calls NLogLogger(:ILogger).Trace(...)
--> calls SomeOtherLogger(:ILogger).Trace(...)
--> calls SomeOtherLogger2(:ILogger).Trace(...)
--> calls SomeOtherLogger3(:ILogger).Trace(...)
我这样做的动机是实现一个 NullObject 模式,我可以确保对 ILogger 的任何调用(它将始终是我的委派调度程序类)都会成功。其次,生活 ILogger 实例的数量将根据应用程序配置而有所不同。
非常感谢任何反馈:) 顺便说一句.. 有什么已知的模式吗?想不出一个...