我需要调用函数来重新计算来自程序{不同类}的不同位置的参数。我需要用不同的系数重新计算,这可以在运行时间内改变。 简单示例:new_value = old_value * coefficient。
目前,我有一个持有这些系数的课程,并且有重新计算的方法。缺点:我需要将该类实例传递给我想要使用它的每个地方。
这是我的单身人士:
public class Converter {
private double lbU_2_U;
private static Converter instance = new Converter();
public Converter() {
lbU_2_U = 1;
}
public static Converter getInstance() {
return instance;
}
public void updateVelocityCoeficient(double lb_2_p) {
lbU_2_U = lb_2_p;
}
public double velToP(double lbU) {
return lbU_2_U * lbU;
}
public double velToLB(double u) {
return u / lbU_2_U;
}
}
所以,现在的优点是,我可以编写程序中的任何地方
newVelocity = Converter.getInstance().velToP(velocity)
前进,我会做这样的事情:
newVelocity = Converter.velToP(velocity)
所以我在考虑将我的Singleton改为:
public class Converter {
private double lbU_2_U;
private static Converter instance = new Converter();
public Converter() {
lbU_2_U = 1;
}
public static Converter getInstance() {
return instance;
}
public static void updateVelocityCoeficient(double lb_2_p) {
instance.lbU_2_U = lb_2_p;
}
public static double velToP(double lbU) {
return instance.lbU_2_U * lbU;
}
public static double velToLB(double u) {
return u / instance.lbU_2_U;
}
}
你怎么了?
如果我可以在multipleThread应用程序中使用它,并且这是使用Singleton的正确方法,我不确定这是否有效。
谢谢
答案 0 :(得分:2)
这不是使用Singleton模式的好方法。
答案 1 :(得分:1)
那很好。但是:
- 您的构造函数应该是私有的才能成为Singleton。 (您是唯一能够创建实例的人)
private Converter() {
lbU_2_U = 1;
}
- 我不相信你需要使用单身人士。你只需要一个
private static double lbU_2_U;
答案 2 :(得分:1)
您不需要这是Singleton
- 您只需要一些static
方法。
public class Converter {
private static double lbU_2_U = 1;
private Converter() {
// No non-static methods so disallow construction.
}
public static void updateVelocityCoeficient(double lb_2_p) {
lbU_2_U = lb_2_p;
}
public static double velToP(double lbU) {
return lbU_2_U * lbU;
}
public static double velToLB(double u) {
return u / lbU_2_U;
}
}
我不会在这里讨论你是否在这里使用好的或坏的模式。