【发布时间】:2015-12-22 10:33:54
【问题描述】:
我需要调用函数来重新计算来自程序{不同类}的不同位置的参数。我需要使用可以在运行时间中更改的不同系数重新计算。 简单示例:new_value = old_value * 系数。
目前我有一个持有这些系数的类,并且有一些方法可以进行重新计算。缺点:我需要将该类的实例传递到我想使用它的每个地方。
这是我的单身:
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)
所以我正在考虑将我的单例更改为:
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;
}
}
你怎么了? 我不确定这是否有效,我是否可以在多线程应用程序中使用它,以及这是否是使用 Singleton 的正确方式。
谢谢
【问题讨论】:
-
那些标识符(变量/方法名)是神秘的。请使用更具描述性的标识符
-
单例是一个概念,而不是正式的规范。更好的是理解概念。看到这个:stackoverflow.com/questions/228164/…
-
@elif 他有编程问题(无法实现动态性质),所以我认为它不适合 CodeReview
-
有状态的单例是个坏主意。见Why is Global State so Evil?
-
这不是真正的单例;我建议将您的构造函数设为私有。
标签: java