Я использую композицию классов. Основной класс содержит 2 других класса. У меня вопрос, как я могу достичь своего основного класса из составных классов? Какие могут быть пути?
Например. У нас есть класс Machine с двумя устройствами. Все 3 класса имеют логическое состояние, активное или нет. Мы можем включить устройства. Задача: когда оба устройства включены, то состояние машины активно. Какие методы могут быть использованы для достижения такого поведения?
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);
}
}
После включения обоих устройств активное состояние машины должно быть true . Как этого добиться?