创建复杂的对象

时间:2015-01-05 08:47:37

标签: java object

我试图创建复杂的角色对象。每个对象都有一个名称,对于每个具有相同名称的对象,它们共享一些相同的初始数据。但是,在创建对象时,还会给对象提供一些数据。例如,大象"总是开始重量为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;?

1 个答案:

答案 0 :(得分:2)

interface Animal{

}

class Elephant implements Animal{

}

创建类似于上面的类结构,如果有任何动物有initial value然后在类中指定该值,如果你想为你的动物赋值,那么你用constructor来给出价值动物创造。