Java 用工厂方法实现单例
我正在尝试使用静态工厂方法创建一个具有singleton属性的类Java 用工厂方法实现单例,java,singleton,Java,Singleton,我正在尝试使用静态工厂方法创建一个具有singleton属性的类 package ishan.Beans; public class ControlManager { private static ControlManager controlManager=null; private double id; private ControlManager() { this.id=Math.random(); } public
package ishan.Beans;
public class ControlManager {
private static ControlManager controlManager=null;
private double id;
private ControlManager()
{
this.id=Math.random();
}
public static ControlManager getControlManager()
{
if(null==controlManager)
return new ControlManager();
return controlManager;
}
public double getId() {
return id;
}
}
package ishan.Beans;
public class Usage {
public static void main(String a[])
{
ControlManager cManager=ControlManager.getControlManager();
ControlManager c=ControlManager.getControlManager();
System.out.println(c);
System.out.println(cManager);
}
}
每次运行这段代码时,我都会得到c和cManager中ControlManager的不同实例。我无法找出问题所在,或者我做错了什么 您没有保存您创建的新实例。。。您的代码是: 但应该是:
public static ControlManager getControlManager() {
if(controlManager == null) {
controlManager = new ControlManager();
return controlManager;
}
更改您的
getControlManager()
:
从
到
这就是它最终的样子:
public static ControlManager getControlManager() {
if(controlManager == null) {
controlManager = new ControlManager();
}
return controlManager;
}
除此之外,还有一些基于意见但得到国际海事组织公约支持的东西:
在编写条件语句(
如果
)时,条件的顺序应该遵循自然表达语句的方式。例如:
- 错误:
if(null==contorlManager)
- 好:
if(controlManager==null)
有关这方面的更多信息,请参见您的代码应更改为:
public static ControlManager getControlManager() {
if(controlManager == null)controlManager = new ControlManager();
return controlManager;
}
祝你好运 您到底在哪一行分配给
controlManager
?感谢您的回答和约定。我会记住:)
controlManager = new ControlManager();
public static ControlManager getControlManager() {
if(controlManager == null) {
controlManager = new ControlManager();
}
return controlManager;
}
public static ControlManager getControlManager() {
if(controlManager == null)controlManager = new ControlManager();
return controlManager;
}