【问题标题】:Service Locator Pattern - How to deal with more than one implementation of the same service interface服务定位器模式 - 如何处理同一个服务接口的多个实现
【发布时间】:2013-12-26 14:39:26
【问题描述】:

我对服务定位器设计模式有点困惑。

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

例如,我可以注册:

ServiceA 实现 IServiceX ServiceB 实现 IServiceX

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    您可以根据一天中的时间、一周中的某天、可用的内存量来返回实例...

    一切由你决定!

    【讨论】:

    • 很高兴知道这一点!尽管我见过的最常见的用法是 1:1 实现(在示例和教程中)。
    猜你喜欢
    • 1970-01-01
    • 2013-03-14
    • 2011-08-22
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2015-11-25
    相关资源
    最近更新 更多