gpt4 book ai didi

java - 使用组合时如何从组合类到达主类?

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

我正在使用类的组合。主类包含其他 2 个类。我的问题是如何从组合类(class)到达我的主类(class)?有什么办法吗?

例如。我们有包含 2 个设备的 Machine 类。所有 3 个类都有一个 boolean 状态是否处于 Activity 状态。我们可以打开设备。任务是:当两个设备都打开时,机器状态处于 Activity 状态。可以使用什么方法来实现这种行为?

public class Machine {

private boolean active;

private Device1 device1;
private Device2 device2;

public Machine(Device1 device1, Device2 device2) {
this.device1 = device1;
this.device2 = device2;
}

public boolean isActive() {
return active;
}

public void setActive(boolean active) {
this.active = active;
}

public Device1 getDevice1() {
return device1;
}

public Device2 getDevice2() {
return device2;
}

}

public class Device1 {

private boolean active;

public void turnOn(){
// should check the state of another device and change machine state if necessary
this.active = true;
}

}

public class Device2 {

private boolean active;

public void turnOn(){
this.active = true;
// should check the state of another device and change machine state if necessary
}

}

public class App {
public static void main(String[] args) {

Device1 device1 = new Device1();
Device2 device2 = new Device2();

Machine machine = new Machine(device1, device2);

machine.getDevice1().turnOn();
machine.getDevice2().turnOn();

boolean active = machine.isActive(); // should be true
System.out.println(active);

}
}

打开两个设备后,机器 Activity 状态应为true。如何实现这一目标?

最佳答案

最简单的解决方案是这样做:

public boolean isActive() {
if (device1 == null || device2 == null) return false;
return device1.isActive() && device2.isActive();
}

您可能会考虑的一件事是为您的设备使用抽象类或让您的设备扩展机器。然后可以得到一个机器列表并独立检查每台机器的 Activity 状态。

关于java - 使用组合时如何从组合类到达主类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58560900/

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