【问题标题】:How to switch between implementations of my SomethingManager class?如何在SomethingManager 类的实现之间切换?
【发布时间】:2011-02-01 15:59:10
【问题描述】:

我有一个具有 OrgManager 界面的应用程序,其中有一个尚未构建的 OrgManagerImpl

OrgManagerImpl 必须与一些我们尚无权访问的 REST API 3rd 方的东西交谈。

因此,当我测试 Web 前端时,我编写了一个模拟 OrgManagerImpl 来实现 OrgManager,但在上线时我需要交换该实现。

但是现在我希望让 servlet 根据某些条件选择其 OrgManager 实现。

此外,当我调用 myOrgManager.findCompany("SomeCompanyId") 时,我希望 myOrgManager 去查看所有可能的实现以找到公司并列出一个大列表。

我还希望在执行 myOrgManager.createCompany(company) 时更喜欢一种实现方式而不是其他实现方式。

我似乎正朝着 UserManagerManager 对象前进……但我觉得这可能缺少一些我应该了解的 Java 或面向对象的设计。

谁能建议我应该使用的模式或策略?

谢谢

【问题讨论】:

    标签: java oop spring design-patterns jakarta-ee


    【解决方案1】:

    Spring DI 在这里非常有用。

    只需更改 xml 即可切换到其他实现

    【讨论】:

      【解决方案2】:

      如果您使用的是 Spring,那么您的实现可以被配置和注入。运行时类型(即实现)可以轻松更改。

      或者,如果您不使用 Spring,那么您可能想查看某种工厂模式,工厂决定为您提供哪种实现。您的工厂可以使用某种外部配置(例如配置文件、环境变量等)来决定要使用的实现。

      【讨论】:

        猜你喜欢
        • 2019-05-15
        • 1970-01-01
        • 2018-07-11
        • 2012-06-22
        • 1970-01-01
        • 2021-05-12
        • 2012-11-30
        • 1970-01-01
        • 2011-06-11
        相关资源
        最近更新 更多