服务定位器模式 - 如何处理同一服务接口的多个实现

时间:2013-12-26 14:39:26

标签: c# design-patterns inversion-of-control service-locator

我对Service Locator设计模式有点困惑。

关于这种模式似乎是一个非常非常基本的问题,但我无法弄明白:如果我有多个类实现一些IServiceX接口怎么办?定位器如何解析我正在寻找的实例?

例如,我可以注册:

ServiceA实施IServiceX ServiceB实现IServiceX

这似乎完全有可能,但我不确定。假设我有两种消息传递服务(相同的服务接口),我想在运行时使用这两种实现。定位器如何在这些不同的实现之间进行选择?

1 个答案:

答案 0 :(得分:1)

这是有趣的部分。 完全由您决定。

您可以遍历您的调用堆栈并确定调用的来源,然后根据调用者的不同,返回不同的实现。

您可能有一个始终用于特定实现的Factory方法。

您可以根据一天中的时间,星期几,可用内存量,...返回您的实例。

这完全取决于你!