Это немного сложно объяснить, поэтому я написал и пример, чтобы проиллюстрировать концепцию. В следующем примере у меня есть класс акций, который моделирует цифры, которые влияют на программу моделирования запасов. У меня также есть класс 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 переменной в модели Stock (в приведенном выше примере это «publicOpinion» установлен в «переменной» String) без использования строки. У строк есть проблема, возможно, их омрачение, и мне нужен переключатель, чтобы определить, какая переменная повлияла на модификатор.
Я думал об использовании перечисления, но мне все равно понадобилась таблица коммутаторов, чтобы проверить их, и мне также нужно будет обновлять значения перечисления каждый раз, когда у акции есть другая переменная, которая может быть затронута (могут быть дополнительные переменные в подклассы запаса). Другой вариант, о котором я думал, был отражением, но это решение, хотя я думаю, что это сработает, кажется слишком сложным и затрудняет чтение, чем оно решает.
Итак, есть ли лучший способ связать объект с переменными (-ами), которые он затрагивает в другом объекте (возможно, какой-то шаблон наблюдателя/наблюдателя?).
Итак, вы хотите, чтобы свойство 'variable' было именем измененного свойства на складе ?? –
Я хочу, чтобы время компиляции проверялось на наличие этой переменной на складе (строка не проверяется временем компиляции). В C++ или C# я мог бы выполнить это с каким-то указателем на переменную, на которую он влияет. Но у Java нет указателей, как бы я сделал это лучше, чем строковая реализация выше? –
Я не понимаю, почему вы не хотите использовать перечисления. –