这有点难以解释,所以我写了一个例子来说明这个概念。在下面的例子中,我有一个库存类,它模拟影响库存模拟程序的数字。我还有一个MarketModifier类,它表示会以不同方式影响股票的事件。Java:将对象链接到另一个对象中的变量
public class ExampleArea
{
public static void main(String cvhfg[])
{
Stock test = new Stock(1f,1f,1f,1f);
MarketModifier worldEvent =
new MarketModifier("Bad publicity",-2.5f,"publicOpinion");
}
}
class MarketModifier
{
public MarketModifier(String name, float modifier, String variable) {
super();
this.name = name;
Modifier = modifier;
this.variable = variable;
}
String name;
float Modifier;
String variable;
}
class Stock
{
public Stock(float value, float integrity, float publicPresence, float publicOpinion) {
super();
this.value = value;
this.integrity = integrity;
this.publicPresence = publicPresence;
this.publicOpinion = publicOpinion;
}
float value;
float integrity;
float publicPresence;
float publicOpinion;
//...other variables...
}
我的问题是如何将我的marketModifer链接到该变量的股票模型(以上是“publicOpinion”中的“变量”字符串设定的例子),而不使用字符串。字符串有可能使它们蒙蒙的问题,我需要一个开关来识别修饰符影响哪个变量。
我想使用一个枚举,但我仍然需要一个切换表来检查它们,我也必须更新枚举值每次股票有一个不同的变量,可能会受到影响(可能有额外的变量Stock的子类)。我想到的另一种选择是反思,但这种解决方案虽然我认为可行,但似乎过于复杂,并且增加了阅读难度,而不是解决问题。
那么,有没有更好的方法将一个对象链接到它在另一个对象中影响的变量(可能是某种观察者/观察者模式?)。
所以你想'变量'属性是股票上修改后的财产的名称? –
我希望它在编译时确认库存中有该变量(该字符串不是编译时间检查)。在C++或C#中,我可以通过某种指向它影响的变量的指针来完成此操作。但是Java没有指针,我怎么会比上面的字符串实现更好? –
我不明白你为什么不想使用枚举。 –