// Constructor accepts mediator as an argument public Accelerator(EngineManagementSystem mediator) { this.mediator = mediator; enabled = false; speed = 0; mediator.RegisterAccelerator(this); }
// Constructor accepts mediator as an argument public Gearbox(EngineManagementSystem mediator) { this.mediator = mediator; enabled = false; currentGear = Gear.Neutral; mediator.RegisterGearbox(this); }
// Constructor accepts mediator as an argument public Brake(EngineManagementSystem mediator) { this.mediator = mediator; enabled = false; applied = false; mediator.RegisterBrake(this); }
// Constructor accepts mediator as an argument public Ignition(EngineManagementSystem mediator) { this.mediator = mediator; on = false; // Register back with the mediator; mediator.RegisterIgnition(this); }
static void Main() { EngineManagementSystem ems = new EngineManagementSystem(); Ignition ignition = new Ignition(ems); Gearbox gearbox = new Gearbox(ems); Accelerator accelerator = new Accelerator(ems); Brake brake = new Brake(ems); ignition.Start(); accelerator.AccelerateToSpeed(30); gearbox.Gear = Gear.Fourth; brake.Apply(); Console.Read(); }