public override void Execute() { var temperatureSensor = new TemperatureSensor(); var heater = new Heater(temperatureSensor, maxHeatingTemperature: 18); // 64° F var airConditioner = new AirConditioner(temperatureSensor, minCoolingTemperature: 21); // 70° F temperatureSensor.Temperature = 17; // 62° F Assert.True(heater.IsHeating); Assert.False(airConditioner.IsCooling); temperatureSensor.Temperature = 20; // 68° F Assert.False(heater.IsHeating); Assert.False(airConditioner.IsCooling); temperatureSensor.Temperature = 22; // 72° F Assert.False(heater.IsHeating); Assert.True(airConditioner.IsCooling); temperatureSensor.RemoveListener(heater); temperatureSensor.Temperature = 17; // 62° F Assert.False(heater.IsHeating); Assert.False(airConditioner.IsCooling); // heater is no longer subscribed, so it wasn't notified of the temperature changes. }