假设您有一个 Singleton A
,其 getInstance()
抛出一些异常。
进一步假设 A
在整个程序中随处使用,虽然 A.getInstance().doSomethingUseful()
很好,但很多代码继承自 Constants
接口(interface),我想声明:
A a = A.getInstance()
在 Constants
中,允许每个实现 Constants
的人访问 a
.
正如所料,Java
提示该方法抛出异常,因此无法在接口(interface)中声明。
有解决方法吗?
最佳答案
我认为这确实不是一个好主意。您试图将该对象的生命周期直接绑定(bind)到实现该接口(interface)的类的结构中。
如果您必须使用单例,那么最好通过 getInstance()
方法显式引用它。是比较直观的。如果需要,请使实例化异常运行时。
更好的是接受这样的前提:单例模式被视为 anti-pattern并考虑替代方案,例如 injection-of-control .
关于java - 从接口(interface)访问单例的引用,可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13823672/