/** Observer que avisa una sola vez y se da de baja él mismo. */
public class FirstAlert implements TemperatureListener {
    private final TemperatureSource subject;
    private final double limit;

    public FirstAlert(TemperatureSource subject, double limit) {
        this.subject = subject;
        this.limit = limit;
    }

    @Override
    public void onReading(Reading reading) {
        if (reading.celsius() > limit) {
            IO.println("primer aviso: se pasó de " + limit + " °C; ya no aviso más");
            subject.removeListener(this);
        }
    }
}
