我有一个具有OrgManager界面的应用程序,它有一个尚未构建的OrgManagerImpl
OrgManagerImpl必须去讨论一些我们无法访问的REST API第三方内容。
因此,当我测试Web前端时,我编写了一个实现OrgManager的模拟OrgManagerImpl,但是在上线时我将需要交换该实现。
但是现在我想要让servlet根据某些条件选择其OrgManager实现。
当我调用myOrgManager.findCompany(“SomeCompanyId”)时,我希望myOrgManager能够查看所有可能的实现来查找公司并列出一个大清单。
另外,我想当myOrgManager.createCompany(公司)更喜欢一个实现而不是其他实现。
我似乎正朝着一个UserManagerManager对象......但我觉得这可能缺少我应该知道的Java或面向对象设计的某些方面。
有人可以提出我应该使用的模式或策略吗?
由于
答案 0 :(得分:2)
Spring DI在这里非常有用。
只需更改xml
即可切换到其他实现答案 1 :(得分:2)
如果您使用的是Spring,那么可以配置和注入您的实现。可以轻松更改运行时类型(即实现)。
或者,如果您不使用Spring,那么您可能需要查看某种工厂模式,工厂决定为您提供哪种实现。您的工厂可以使用某种外部配置(例如配置文件,环境变量等)来决定要使用的实现。