Я пытаюсь создать сложные объекты символов. Каждый объект имеет имя, и для каждого объекта с тем же именем они имеют одни и те же исходные данные. Тем не менее, есть также некоторые бит данных, которые предоставляются объекту при его создании. Например, «Слон» всегда начинается с веса 500, но его положение определяется, когда оно создано. Любое из этих значений позже может быть изменено во время выполнения.Создание сложного объекта
Я имею в виду решение этой проблемы, имея кучу кода, как показано ниже:
class CharacterStaticParameters {
int weight;
int numberOfFeet;
int numberOfEyes;
}
class CharacterDynamicParameters {
float positionX;
float positionY;
float velocityX;
float velocityY;
}
class Character {
int weight;
int numberOfFeet;
int numberOfEyes;
float positionX;
float positionY;
float velocityX;
float velocityY;
public Character(CharacterStaticParameters characterStaticParameters,
CharacterDynamicParameters characterDynamicParameters)
{
this.weight = characterStaticParameters.weight;
this.numberOfFeet = characterStaticParameters.numberOfFeet;
this.numberOfEyes = characterStaticParameters.numberOfEyes;
this.positionX = characterDynamicParameters.positionX;
this.positionY = characterDynamicParameters.positionY;
this.velocityX = characterDynamicParameters.velocityX;
this.velocityY = characterDynamicParameters.velocityY;
}
}
class StaticParameters {
public static final Map<String, CharacterStaticParameters> nameToParameters
= new HashMap<String, CharacterStaticParameters>();
}
//function that's somewhere else
public Character build(String name,
CharacterDynamicParameters characterDynamicParameters)
{
CharacterStaticParameters characterStaticParameters =
StaticParameters.nameToParameters.get("Elephant");
return new Character(characterStaticParameters,
characterDynamicParameters);
}
Есть ли лучший способ решить эту проблему? Кроме того, есть ли что-то, что может смутить насчет того, как я все назвал? Например, следует ли пытаться использовать слова, отличные от «статического» и «динамического», или более приятное слово, чем «параметры»?
Один из распространенных способов состоит в том, чтобы иметь класс «Слон». – immibis
, если у вас ограничено количество символов 'CharacterStaticParameters', вы можете делать заводы – user902383
Это неопровержимо. Вы не дали обоснования или вариантов использования для своего проекта, а рекомендации по названиям типов и переменных по своей сути основаны на мнениях. Вы эффективно просите кодовую проверку кода ... и для этого есть еще один сайт. –