public CompensateActivityHostSpecification(ICompensateActivityFactory <TActivity, TLog> activityFactory, IActivityConfigurationObserver observer) { _activityFactory = activityFactory; _activityPipeConfigurator = new PipeConfigurator <CompensateActivityContext <TActivity, TLog> >(); _compensatePipeConfigurator = new PipeConfigurator <CompensateContext <TLog> >(); _routingSlipConfigurator = new RoutingSlipConfigurator(); _observers = new ActivityObservable(); _configurationObservers = new ActivityConfigurationObservable(); _configurationObservers.Connect(observer); }
public ExecuteActivityHostSpecification(IExecuteActivityFactory <TActivity, TArguments> activityFactory, IActivityConfigurationObserver observer) { _activityFactory = activityFactory; _activityPipeConfigurator = new PipeConfigurator <ExecuteActivityContext <TActivity, TArguments> >(); _executePipeConfigurator = new PipeConfigurator <ExecuteContext <TArguments> >(); _routingSlipConfigurator = new RoutingSlipConfigurator(); _observers = new ActivityObservable(); _configurationObservers = new ActivityConfigurationObservable(); _configurationObservers.Connect(observer); }
/// <summary> /// Демо паттерна "Наблюдатель". /// Паттерн Наблюдатель определяет отношение «один-ко-многим» между объектами таким образом, /// что при изменении состояния одного объекта происходит автоматическое оповещение и обновление всех зависимых объектов. /// </summary> public void DemoObserver() { // Создание субъектов (наблюдаемых объектов) var climateObservable = new ClimateObservable(); var activityObservable = new ActivityObservable(); // Создание наблюдателей var consoleWriterClimateObserver = new ConsoleWriterObserver(climateObservable); var consoleWriterActivityObserver = new ConsoleWriterObserver(activityObservable); var telegramBotClimateObserver = new TelegramBotObserver(climateObservable); var telegramBotActivityObserver = new TelegramBotObserver(activityObservable); // Имитация установки значений наблюдаемым объектам // (как будто данные пришли по HTTP с ESP8266) climateObservable.SetSensorsData(new ClimateInfo { Temperature = 24, Humidity = 40, }); activityObservable.SetSensorsData(new ActivityInfo { LastActivity = DateTime.Now, }); }