我按照说明设置单例模式类(例如Singleton)并创建一个演示类(例如SingletonDemo),在演示类中,我尝试通过以下代码在main()中创建2个Singleton实例:
Singleton instance1 = Singleton.getInstance();
Singleton instance2 = Singleton.getInstance();
我认为创建instance2时会弹出错误,但是成功创建instance2,为什么?我认为应该为单一模式创建单个实例
答案 0 :(得分:1)
单例的想法是一次只能有一个该类的实例。它总是返回相同的对象。不可能有两个相同单例的对象,至少要修改类的字段,但这可能会破坏某些东西,而且即使它是JDK的一部分,也是不可能的。
答案 1 :(得分:1)
Singleton的全部要点是,对getInstance()
的第一次调用创建并返回(单个)实例,而对getInstance()
的所有以后的调用(后接)都返回 同一个实例 。
此行为允许需要引用单例的任何模块检索它,而不必担心它是否需要创建它。根据定义,对getInstance()
的第二次调用不应引发错误。