公共字段的替代方案有哪些?
我正在用java编写游戏,正如问题标题所建议的那样,我正在我的课程中使用公共字段。(暂时)
从我所看到的,公共领域是坏的,我有一些理解为什么。(但如果有人能澄清为什么你不应该使用它们,那将不胜感激)
问题是,从我所看到的(这似乎是合乎逻辑的)是,使用私有字段,但使用getter和setter来访问它们也不好,因为它首先击败了使用私有字段的观点。
所以,我的问题是,有哪些替代方案?还是我真的必须使用带有getter和setters的私人字段?
作为参考,这是我的一个类,以及它的一些方法。
如果需要,我将详细阐述。
public double health;
//The player's fields.
public String name;
public double goldCount;
public double maxWeight;
public double currentWeight;
public double maxBackPckSlts;
public double usedBackPckSlts; // The current back pack slots in use
public double maxHealth; // Maximum amount of health
public ArrayList<String> backPack = new ArrayList<String>();
//This method happens when ever the player dynamically takes damage(i.e. when it is not scripted for the player to take damage.
//Parameters will be added to make it dynamic so the player can take any spread of damage.
public void beDamaged(double damage)
{
this.health -= damage;
if (this.health < 0)
{
this.health = 0;
}
}
编辑:出于检查目的,这是我的类现在的样子:(代码示例由于某种原因不起作用,所以它看起来不正确。Weapon
private final double DAMAGE;
private final double SPEED;
public Weapon(double initialDmg,double initialSpd,String startName,double initialWg)
{
DAMAGE = initialDmg;
SPEED = initialSpd;
setItemName(startName);
setItemWeight(initialWg);
}
public double getSpeed()
{
return SPEED;
}
public double getDamage()
{
return DAMAGE;
}
如您所见,由于 和 不需要更改,因此它们暂时可以是最终的。(如果在游戏的后面,我决定这些值可以“升级”,那么我可能会添加二传手,然后进行验证,或者只是用升级的值制作一把新武器)它们在构造函数中设置。Weapon's
DAMAGE
SPEED
Weapon's
结论:getters和setters都很好,只要它们被巧妙地使用,并且只在需要时使用。(但是)