如果singleton被认为不利于全局状态,特别是可能影响代码主要执行的状态,那么应该如何处理全局状态,例如web框架?
脑海中浮现的直接事物是:
- 基本Url
- 基本文件路径
- 常规配置
- 日志记录实例
- 等等
我看不出有任何其他方式,除了单例访问这些,比如应用程序()类或类似的?
将此数据加载到应用程序的全局中。例如,在Web应用程序中,您可以将这些数据存储在应用程序范围中,即使用ServletContextListener
的ServletContext
。
此外,您还可以使用一个框架,该框架已经为特定上下文处理全局状态,如Spring。
顺便说一句,有一些情况,如日志记录实例(即Logger logger
),它们不是存储在单例实例中,而是存储在每个类中,标记为static final
。
更多关于Singleton模式用法的讨论:
- 单身汉有什么不好的