假设我有两个对象 Light
和 LightSwitch
我想要做的是
Switch on the
LightSwitch
then check thatLight
is turn on or turn off (In this case expected answer is 'on')
请注意,当开关打开时,共享变量名称 current
将设置为 true
,然后 Light
也会打开
我对这个问题感兴趣的是:
- 两个类(在本例中是类
Light
和LightSwitch
)如何在不使用全局变量的情况下共享变量值(在本例中共享变量是current
)? - 如何用面向对象的概念来实现这个简单的问题?
预期输出(或者您喜欢的另一个输出可以告诉我好的,灯打开/关闭):
switch on: true // This line just set variable `current` in `LightSwitch` class
Light is turned on // This line just check that `current` variable in `Light` class is True or false
switch on: false
Light is turned off
最佳答案
有两种方法可以实现此目的。
更具体的方法
public class Light implements Switchable{
private boolean on;
@Override
public boolean isOn() { return on; }
@Override
public void setIsOn(boolean on) { this.on = on; }
}
public class LightSwitch {
public void List<Switchable> switchables = new ArrayList<Switchable>(); // A generic list of things that are controlled by the switch. Doesn't have to be lights.
public void off() { setState(false); }
public void on() { setState(true); }
private void setState(boolean state) {
for(Switchable switchable: switchables) {
switchable.setIsOn(state);
}
}
}
观察者方法
observer design pattern可能非常适合更通用的东西,它实际上扩展了我之前给出的示例。如果您不熟悉它,这是一种实现事件的方法,从而将两个对象的状态联系起来,而当一个对象发生更改时,另一个对象会“观察”此更改并做出相应的 react 。在这种情况下,您的灯会观察开关。
关于java - Java中如何在不使用全局变量的情况下在两个类之间共享变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938123/