Я новичок в концепции объектно-ориентированного программирования (в Java), и я часто сталкиваются со следующей проблемой: дизайнЛучшие практики: -переменные заполняющие с течением времени
Я часто создавать классы с переменными экземпляра, которые не известны в момент инициализации. Эти переменные заполняются с течением времени. Это не настоящая проблема, так как эти переменные равны нулю до тех пор, пока они не будут заполнены, поэтому мой вопрос связан скорее с лучшей практикой в таких ситуациях.
Позвольте мне объяснить это на примере. У меня есть класс Car
. Каждый Car
имеет color
, vMax
, weight
, horsepower
и т.д.
При инициализации Car
только это color
, weight
и horsepower
известны. ->Car(color, weight, horsepower)
Теперь можно рассчитать vMax
(скажем: weight/horsepower
). Меня смущает то, что Car
после инициализации является «неполным», что означает, что vMax
будет заполняться только со временем.
Я нашел это довольно уродливым, и, конечно, пример автомобиля упрощен. У меня часто есть классы с 10+ свойствами, где некоторые из них вычисляются с течением времени, которые сами позже в коде используются для вычисления еще большего количества свойств этого объекта. Затем становится трудно узнать, какие переменные уже заполнены в определенной точке, а какие нет.
Я просто задавался вопросом, является ли это «нормальным» и как работает ООП, или следует избегать таких ситуаций. Если да, я был бы рад некоторым советам по дизайну.
Майкл
Я бы предложите заглянуть в плавный шаблон строителя, используя свойства с нулевым значением (поэтому примитивные значения по умолчанию не путаются с неназначенными значениями) и проверка всех необходимых свойств в одном или нескольких частных методах, которые вызывают при необходимости. – Mena
Кажется, что 'vMax' должен быть методом, а не переменной ... – beerbajay
@beerbajay - Я бы предпочел переменную * переходный * вместо метода для' vMax' :) – TheLostMind