好的,几乎在我阅读的所有地方,我都读到 getter/setter 是“邪恶的”。现在,作为一名经常在 PHP/C# 中使用 getter/setter 的程序员,我看不出它们是如何存活的。我读过它们破坏了封装等,但是,这是一个简单的例子。
class Armor{
int armorValue;
public:
Armor();
Armor(int); //int here represents armor value
int GetArmorValue();
void SetArmorValue(int);
};
现在,让我们说 getter 和 setter 是“邪恶的”。您应该如何在初始化后更改成员变量。
例子:
Armor arm=Armor(128); //armor with 128 armor value
//for some reason I would like to change this armor value
arm.SetArmorValue(55); //if i do not use getters / setters how is this possible?
可以说,无论出于何种原因,上述情况都不好。如果我的游戏将护甲值限制在 1 到 500 之间怎么办。(没有盔甲可以有一件盔甲超过 500 或少于 1 的盔甲)。
现在我的实现变成了
void Armor::SetArmor(int tArmValue){
if (tArmValue>=1 && tArmValue<=500)
armorValue=tArmValue;
else
armorValue=1;
}
那么,如果不使用 getter/setter,我还能如何施加这个限制呢?如果不使用 getter/setter,我还能如何修改属性?armourValue 是否应该只是案例 1 中的公共成员变量,以及案例 2 中使用的 getter/setter?
好奇的。多谢你们