我试图创建复杂的角色对象。每个对象都有一个名称,对于每个具有相同名称的对象,它们共享一些相同的初始数据。但是,在创建对象时,还会给对象提供一些数据。例如,大象"总是开始重量为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);
}
有没有更好的方法来解决这个问题?另外,有什么东西可能让我对所有内容命名的方式感到困惑吗?例如,我是否应该尝试使用“静态”之外的单词。和&#39;动态&#39;或比#&quot;参数更好的单词&#39;?
答案 0 :(得分:2)
interface Animal{
}
class Elephant implements Animal{
}
创建类似于上面的类结构,如果有任何动物有initial value
然后在类中指定该值,如果你想为你的动物赋值,那么你用constructor
来给出价值动物创造。