Example #1
0
        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.
        }