我对Service Locator设计模式有点困惑。
关于这种模式似乎是一个非常非常基本的问题,但我无法弄明白:如果我有多个类实现一些IServiceX接口怎么办?定位器如何解析我正在寻找的实例?
例如,我可以注册:
ServiceA实施IServiceX ServiceB实现IServiceX
这似乎完全有可能,但我不确定。假设我有两种消息传递服务(相同的服务接口),我想在运行时使用这两种实现。定位器如何在这些不同的实现之间进行选择?
答案 0 :(得分:1)
这是有趣的部分。 完全由您决定。
您可以遍历您的调用堆栈并确定调用的来源,然后根据调用者的不同,返回不同的实现。
您可能有一个始终用于特定实现的Factory方法。
您可以根据一天中的时间,星期几,可用内存量,...返回您的实例。
这完全取决于你!