Пример #1
0
        static void Main(string[] args)
        {
            var train        = new TrainSD40();
            var car          = new CarVehicle();
            var trainAdapter = new TrainDrivingSkillAdapter(train);
            var worker       = new Worker();

            var consoleObserver = new ConsoleLoggerObserver();

            using (var fileLoggerObserver = new FileLoggerObserver("./logger-output.log"))
            {
                if (car is IObservableSubject s1)
                {
                    s1.Attach(consoleObserver);
                    s1.Attach(fileLoggerObserver);
                }

                if (train is IObservableSubject s2)
                {
                    s2.Attach(consoleObserver);
                    s2.Attach(fileLoggerObserver);
                }

                worker.Drive(car, GearboxPosition.Forward);
                worker.Drive(trainAdapter, GearboxPosition.Forward);
            }

            car.DetachAll();
            train.DetachAll();
        }