由于单例模式用于有状态对象,而MVC中的servlet请求/响应通常由无状态对象(控制器类)管理,为什么它们只使用单例模式?
答案 0 :(得分:2)
单一模式,如GoF书籍Design Patterns中所述,旨在应用于无状态对象。在应用程序中只有一个Singleton实例,它的所有客户端共享同一个实例,然后是相同的状态。在大多数情况下,这不是对象应具有的行为。但是,无状态或有状态不是Singleton功能。这是你的设计必须决定一个单身人士是否应该有一个州。
谈到Spring和Struts控制器,我们将它们建模为Singleton是正确的。这些对象应该没有状态,如果它们有一些属性,它们通常都是服务类,也就是Singleton。
最后,控制器的构建过程需要付出代价。因此,出于性能原因,它们也被实现为Singleton类。