Java 考虑到运行时配置类型应用程序范围的最佳实践/最佳设计选择 我想考虑我的Web应用程序的配置类型(部署/开发),以切换我的Web应用程序中的许多模块在生存和测试行为之间的功能。

Java 考虑到运行时配置类型应用程序范围的最佳实践/最佳设计选择 我想考虑我的Web应用程序的配置类型(部署/开发),以切换我的Web应用程序中的许多模块在生存和测试行为之间的功能。,java,design-patterns,wicket,Java,Design Patterns,Wicket,例如,有一些模块提供支付服务,我需要在live和sandbox之间切换API配置。我想根据webapplications配置类型来决定。例如,提供如下方法: public boolean isRuntimeConfigurationTypeDeployment() { return getConfigurationType().equals(RuntimeConfigurationType.DEPLOYMENT); } 在我的Applications类中,我可以通过任何

例如,有一些模块提供支付服务,我需要在live和sandbox之间切换API配置。我想根据webapplications配置类型来决定。例如,提供如下方法:

public boolean isRuntimeConfigurationTypeDeployment() {
        return getConfigurationType().equals(RuntimeConfigurationType.DEPLOYMENT);
    }
在我的Applications类中,我可以通过任何wicket页面调用它。但是,与其将切换行为的责任留给wicket组件本身,不如集中管理这些决策。由于决策需要在许多不同的地方做出,我想知道设计这种体系结构的最佳实践是什么

另一个实际例子: 用于将订单手动提交到管理前端内的fullfillment center的按钮

public void onClick(AjaxRequestTarget target) {
                if(getShopAdminApplication().isRuntimeConfigurationTypeDeployment())
                    Export.fullfillment().send();
                else {
                    ExportMock.fullfillment().send();
                }
            }

我将使用提供运行时模式的单一服务(dev、prod、uat等)。还有另一种服务(spring配置),它根据模式执行不同类型的ioc。我会避免按组件检查模式。ioc应该在启动时完成,然后所有组件都应该完全一样工作,无论是prod还是test。只要尝试替换一些组件的实现以进行测试。

如果主要是切换服务,您可以使用Google Guice(或其他依赖项注入框架)来提供这些服务,并根据Application.init()中的当前运行时模式,使用一个中心点来加载模块。这样,您的代码就不会被样板文件弄乱,您也不会忘记这个样板文件