0
respostas

[Projeto] DeviceControls

Não sei se foi muito overengineering, mas eu conseguir arrumar uma forma de não ter que digitar a checagem se está ligado ou não, toda vez que criar uma nova classe de dispositivos.

(não utilizei interface nesse exercício)

Classe ToggleDevice

package com.vikinhd.Classes;

public abstract class ToggleDevice {
    protected boolean State;

    public ToggleDevice() {
        State = false;
    }

    protected boolean isSameState(boolean newState) {
        return (State == newState);
    }

    public void toggle(boolean newState) {
        if (isSameState(newState)) {
            System.out.println("Has same state.");
        } else {
            if (newState){
                on();
                State = true;
            } else{
                off();
                State = false;
            }
        }
    }

    protected abstract void on();
    protected abstract void off();
}

Classe Light

package com.vikinhd.Classes;

public class Light extends ToggleDevice{
    public Light() {
        super();
    }

    @Override
    public void on() {
        System.out.println("Turned lights on.");
    }

    @Override
    public void off() {
        System.out.println("Turned lights off.");
    }
}

Classe AirConditioner

package com.vikinhd.Classes;

public class AirConditioner extends ToggleDevice{
    public AirConditioner() {
        super();
    }

    @Override
    protected void on() {
        System.out.println("Turned air on.");
    }

    @Override
    protected void off() {
        System.out.println("Turned air off.");
    }
}