我正在写一个游戏,我有一个输入类,其中包含所有不同键的 boolean 值。我在主游戏类中创建了该类的实例。 boolean 值可以公开吗,还是应该使用访问器访问它们?

最佳答案

如果您有一个boolean,并且所有键都初始化为private Map<String, Boolean> keyStates,那么每个 key 都没有false,而是更易读,更容易编码。那么您的访问者可能是:

public void setPressed(String keyName) {
    keyStates.put(keyName, true);
}

public void setReleased(String keyName) {
    keyStates.put(keyName, false);
}

public boolean isPressed(String keyName) {
    return keyStates.get(keyName);
}

具有访问器方法而不是公共(public)变量的一般原因是,它允许类更改其实现,而无需更改与其成员交互的类。例如,使用上述方法,您现在可以添加代码来计数或记录按键,或更改所使用的Map的基础类型,而无需将其中任何一种暴露于外界。

这不是个人喜好。 EncapsulationInterfaces是OO软件工程的组成部分,并且是从技术POV启用Internet的主要设计原因。

09-27 15:09