Java 我可以像这样实现单例模式吗? 想探索实现单模式的新方法,这种实现可以看作是单一模式吗?如果没有,请给出改进代码的建议 public interface Test { Singleton single = new Singleton(); class Singleton { int i = 10; private Singleton(){} } }

Java 我可以像这样实现单例模式吗? 想探索实现单模式的新方法,这种实现可以看作是单一模式吗?如果没有,请给出改进代码的建议 public interface Test { Singleton single = new Singleton(); class Singleton { int i = 10; private Singleton(){} } },java,design-patterns,singleton,Java,Design Patterns,Singleton,是的,您可以通过这种方式实现Singleton模式。接口声明的所有字段都是最终的静态字段。并且在具有私有构造函数的接口中定义了一个内部类。你的方式不同,但很管用。因为这些字段是静态的和最终的,所以在加载接口的.class文件时,它们只会被实例化一次 虽然代码可以工作,但这仍然不是实现Singleton的最佳方式。您只需使用私有构造函数创建一个普通的公共类。在这个类中,您可以定义同一类类型的publicstaticfinal字段,使用new关键字初始化它(您可以这样做,即使构造函数是私有的,因为类

是的,您可以通过这种方式实现
Singleton
模式。
接口
声明的所有字段都是最终的静态字段。并且在具有私有构造函数的接口中定义了一个内部类。你的方式不同,但很管用。因为这些字段是静态的和最终的,所以在加载接口的.class文件时,它们只会被实例化一次


虽然代码可以工作,但这仍然不是实现Singleton的最佳方式。您只需使用私有构造函数创建一个普通的公共类。在这个类中,您可以定义同一类类型的
publicstaticfinal
字段,使用
new
关键字初始化它(您可以这样做,即使构造函数是私有的,因为类中的代码可以访问私有实体)。您的类现在是
Singleton
。另一种方法是通过
Enum

是的,您可以通过这种方式实现
Singleton
模式。
接口
声明的所有字段都是最终的静态字段。并且在具有私有构造函数的接口中定义了一个内部类。你的方式不同,但很管用。因为这些字段是静态的和最终的,所以在加载接口的.class文件时,它们只会被实例化一次


虽然代码可以工作,但这仍然不是实现Singleton的最佳方式。您只需使用私有构造函数创建一个普通的公共类。在这个类中,您可以定义同一类类型的
publicstaticfinal
字段,使用
new
关键字初始化它(您可以这样做,即使构造函数是私有的,因为类中的代码可以访问私有实体)。您的类现在是
Singleton
。另一种方法是通过
Enum

没有接口为什么要这样做?@Kiran Bhagwat,您可以很好地使用您的方法来实现单例模式。
接口
字段是隐式的
公共静态final
。它们将只加载一次。您拥有内部类的私有构造函数,因为接口的内部类隐式地是静态的,所以它不会依赖于外部类的
实例。虽然您的方法不是最好的,因为其他传统方法已经存在,但您的方法仍然有效。查看下面我的答案以获得更详细的答案。没有界面为什么要这样做?@Kiran Bhagwat,您可以很好地使用您的方法来实现单例模式。
接口
字段是隐式的
公共静态final
。它们将只加载一次。您拥有内部类的私有构造函数,因为接口的内部类隐式地是静态的,所以它不会依赖于外部类的
实例。虽然您的方法不是最好的,因为其他传统方法已经存在,但您的方法仍然有效。请查看下面我的答案,以获得更详细的答案。