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