如果单例被认为对全局状态不利,特别是会影响代码主要执行的状态,那么应该如何处理 Web 框架的全局状态?
首先想到的是:
- 基本网址
- 基本文件路径
- 常规配置
- 记录实例
- 等等
除了单例之外,我看不到任何其他方式来访问这些内容,例如 App() 类或类似的类?
最佳答案
将此数据加载到您的应用程序已经全局的位置。例如,在 Web 应用程序中,您可以将此数据存储在应用程序范围内,即 ServletContext
使用ServletContextListener
.
此外,您还可以使用已经在每个特定上下文中处理全局状态的框架,例如 Spring。
顺便说一下,有些情况像Logging实例(即Logger记录器
)不存储在单例实例中,而是存储在每个类中,标记为静态最终
。
有关单例模式使用的长期无休止的讨论的更多信息:
关于java - 如果单例很糟糕,那么如何存储框架的全局状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18156042/