嗨,我在一份面试题目中看到了这个问题。
单例模式和原型模式(非单例模式),哪一个是有状态的,哪一个是无状态的?
我不确定原型模式是否是无状态的?这个问题有什么问题吗?
嗨,我在一份面试题目中看到了这个问题。
单例模式和原型模式(非单例模式),哪一个是有状态的,哪一个是无状态的?
我不确定原型模式是否是无状态的?这个问题有什么问题吗?
singleton
将导致ApplicationContext
创建一个单一实例,并在请求该bean的任何地方都使用该实例。prototype
将导致ApplicationContext
每次请求该bean时都创建一个新实例。static
不够面向对象 ;) - user395760原型(Prototype)Bean和单例(Singleton)Bean都可以保存状态。但是,根据Spring文档的说法,“对于所有有状态的Bean,应该使用原型范围,而对于无状态的Bean,则应使用单例范围。”
无状态bean:单例bean,仅初始化一次。它们唯一的状态是共享状态。这些bean在ApplicationContext初始化时创建。在此ApplicationContext的生命周期内,将返回/注入相同的bean实例。
有状态bean:可以携带状态(实例变量)的bean。每次需要对象时都会创建它们。
单例模式不是数据对象,将其视为数据包装器和访问点方法。
单例模式可能会被销毁,但是其所存储的状态会被独立地保存并在单例模式重新创建后呈现出来(安卓向您问好,销毁的单例模式是臭名昭著的陷阱)。
无状态单例模式基本上是一组静态方法;它与静态工具类没有什么区别,而且实例的数量并不重要:0、1、2或无限。
因此,单例通常是有状态的。
(这就是为什么争论在枚举中实现单例模式是否自动解决序列化问题是毫无意义的原因。如果单例是无状态的,则该论点是无意义的;如果单例是有状态的,则该论点是错误的)