Q: 为什么使用getter和setter?
A: 将它们与私有实例变量结合使用,可以精确定义字段值的更改方式。这可能会变得很乏味,因为大多数情况下,getter和setter只是获取/设置值,而没有任何检查或副作用。但即使在代码中,您也可以看到faceValue的设置者如何检查给定的值是否在0和最大值之间。这保证了当任何人(包括您自己)想要更改faceValue时,将检查输入。
这称为封装,在封装中,您可以隐藏类的字段,使其不受类外部的任何事物的影响,并定义如何更改get和操作这些字段的非常具体的方法。
Q: 为什么要将faceValue设置为1?
A: 这只是将faceValue初始化为1。因此,如果在不首先滚动模具的情况下调用getValue,它将始终返回1。你想要什么都行。
Q: 为什么使用MAX?
首先,它使代码更容易阅读。如果我读了你的代码
value <= 6
,我会对6到底是什么感到困惑。如果我看到像DICE_MAX_VALUE这样的东西,我就知道你在查什么了。
其次,也许更重要的是,使用常量可以定义一次并在任何地方使用它,并保证具有相同的值。如果你想把它改成一个20面骰子,你必须进入你的代码,把所有的'6'实例改成'20',这可能会很烦人,耗时,而且容易出错。