可能是一个重复的问题.但我需要实现类似的东西
@Singleton
public class Person {
}
Run Code Online (Sandbox Code Playgroud)
这将确保只有Person对象的单个实例.
一种方法是使构造函数私有化.但这使Singleton注释变得多余.
我真的无法理解我是否真的可以将对象创建限制为单个对象而不会使构造函数变为私有.
这甚至可能吗?
gd1*_*gd1 22
没有注释可以阻止实例化类.但是,如果您计划实现类似依赖注入框架的东西,或者只是一个简单的对象工厂,那么您可以使用反射来读取注释并防止类被多次实例化,但我明白这不是您的答案正在寻找.
您实际上可以考虑放弃单例模式并转移到更合适的DI框架之类的更现代的解决方案,这可以为您提供相同的结果 - 具有更大的灵活性.
Cru*_*her 11
public class ASingletonClass
{
private static ASingletonClass instance = null;
private ASingletonClass()
{
}
public static ASingletonClass getInstance()
{
if(instance==null)
{
instance = new ASingletonClass();
}
return instance;
}
}
Run Code Online (Sandbox Code Playgroud)
这是实现单例的正确方法.注释不能阻止人们调用公共构造函数.
| 归档时间: |
|
| 查看次数: |
23794 次 |
| 最近记录: |