/// <summary> /// The good design stipulates that we remove the logging-consideration from the SensorCabinet-class altogether. Breaks with the single responsibility principles, anyway. /// </summary> public static void Main() { // "Composition root" InitializaAlarms(); InitializeSensors(); AttachAlarmsToSensors(); IEnumerable <ISensor> sensorCollection = new List <ISensor>() { _temperatureSensor1, _temperatureSensor2, _pressureSensor }; SensorCabinet sensorCabinet = new SensorCabinet(sensorCollection); // now do some monitoring... // At some point, we wish to write temperature sensor values to a log. // By removing the logger from the sensor-cabinet, we forego problems with the single-responsibility principle. InitializeTemperatureSensorLogger(); var temperatureSensorData = sensorCabinet.GetAllTemperatureSensorsData(); temperatureSensorLogger.WriteAllTemperatureSensorsDataToLog(temperatureSensorData); // }
public void GoodDesign_TestHasNoLongerDependencyOnLogger() { // arrange MockSensor mockedSensor = new MockSensor(); DependencyInversion_GoodDesign.SensorCabinet sensorCabinet = new DependencyInversion_GoodDesign.SensorCabinet(new List <ISensor> { mockedSensor }); // act bool hasLongerALoggingMethod = sensorCabinet.GetType().GetMethods().Any(method => method.Name == "WriteAllTemperatureSensorsDataToLog"); // assert Assert.IsFalse(hasLongerALoggingMethod); }