我正在写一个游戏,我有一个输入类,其中包含所有不同键的 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
的基础类型,而无需将其中任何一种暴露于外界。这不是个人喜好。 Encapsulation和Interfaces是OO软件工程的组成部分,并且是从技术POV启用Internet的主要设计原因。