在我迄今为止的所有项目中,我使用单例模式在整个应用程序中访问应用程序配置.最近我看到很多文章都在讨论不使用单例模式,因为这种模式不会提升可测试性,也会隐藏Component依赖性.我的问题是存储应用程序配置的最佳方法是什么,可以在整个应用程序中轻松访问,而无需在整个应用程序中传递配置对象?
提前致谢
马杜
我认为应用程序配置是Singleton模式的一个很好的用途.我倾向于自己使用它来防止每次我想要访问它时重新读取配置,因为我喜欢强配置配置(即,不必每次都转换非字符串值).我通常在我的Singleton中构建一些后门方法来支持可测试性 - 即注入XML配置的能力,这样我就可以在我的测试中设置它,并且能够销毁Singleton,以便在需要时重新创建它.通常,这些是我通过反射访问的私有方法,以便它们从公共接口隐藏.
编辑我们生活和学习.虽然我认为应用程序配置是少数使用Singleton的地方之一,但我不再这样做了.通常,现在,我将使用Lazy
配置属性的静态支持字段创建接口和标准类实现.这允许我对每个属性进行"初始化一次"行为,并具有更好的可测试性设计.
使用依赖注入将单个配置对象注入到需要它的任何类中.通过这种方式,您可以使用模拟配置进行测试或任何您想要的...您没有明确地出去并获得需要使用配置文件初始化的内容.使用依赖项注入时,您不会传递对象.