首页 文章

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

提问于
浏览
2

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

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

例如,我可以注册:

ServiceA 实现 IServiceX ServiceB 实现 IServiceX

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

1 回答

  • 1

    这是有趣的部分。 完全取决于你自己决定.

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

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

    您可以将您返回的实例基于一天中的时间,星期几,可用内存量,...

    全取决于你!

相关问题