gpt4 book ai didi

java - Java中如何在不使用全局变量的情况下在两个类之间共享变量?

转载 作者:行者123 更新时间:2023-12-01 06:32:12 25 4
gpt4 key购买 nike

假设我有两个对象 LightLightSwitch 我想要做的是

Switch on the LightSwitch then check that Light is turn on or turn off (In this case expected answer is 'on')

请注意,当开关打开时,共享变量名称 current 将设置为 true,然后 Light 也会打开

我对这个问题感兴趣的是:

  • 两个类(在本例中是类 LightLightSwitch)如何在不使用全局变量的情况下共享变量值(在本例中共享变量是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com