Java 带动态变量的单态
我需要调用函数来重新计算程序{不同类}不同位置的参数。我需要重新计算不同的系数,可以改变运行时间。 简单示例:新值=旧值*系数 目前,我有一个类保存这些系数,有一些方法正在进行重新计算。缺点:我需要将该类的实例传递到我想要使用它的每个地方 这是我的单身汉:Java 带动态变量的单态,java,Java,我需要调用函数来重新计算程序{不同类}不同位置的参数。我需要重新计算不同的系数,可以改变运行时间。 简单示例:新值=旧值*系数 目前,我有一个类保存这些系数,有一些方法正在进行重新计算。缺点:我需要将该类的实例传递到我想要使用它的每个地方 这是我的单身汉: public class Converter { private double lbU_2_U; private static Converter instance = new Conve
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;
}
}
你喜欢什么?
我不确定这是否有效,是否可以在multipleThread应用程序中使用,以及这是否是使用Singleton的正确方法
谢谢太好了。但是:
-您的构造函数应该是私有的,才能成为单例。(您是唯一能够创建实例的用户)
-我认为你不需要使用单身汉。你只需要一个
private static double lbU_2_U;
这不是使用单例模式的好方案
看看这些答案:你不需要把它变成一个
单身汉
——你只需要一些静态
方法
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;
}
}
我不会在这里讨论您使用的是好模式还是坏模式。这些标识符(变量/方法名称)都很神秘。请使用更具描述性的标识符Singleton是一个概念,而不是一个正式的规范。更好的方法是理解概念。请看:@elif他有编程问题(无法实现动态特性),因此我认为CodeReviews不适合使用状态单例是个坏主意。看,这不是真正的单身;我建议您将构造函数设置为私有。1)是的,构造函数将是私有的,快速编写2)好吧,我需要在运行程序时更改lbU_2_P系数。您可以在运行时更改静态属性。“公共无效设置(双d)”
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;
}
}