Example #1
0
        /// <summary>
        /// Паттерн "Цепочка обязанностей" используется когда необходимо представить нескольким объектам возможность обработать запрос.
        /// Например, имеется непрерывный поток сообщений к приложению, которые можно категоризировать (разбивать на группы) и обрабатывать каждую группу
        /// определенным образом. Также к примеру можно отнести механизм Middleware в ASP .NET.
        /// Преимущества паттерна:
        /// - логическая изоляция отправителя запроса от получателей;
        /// - объект упрощается, так как ему не нужно знать ни структуру цепочки, ни хранить прямые ссылки на ее элементы;
        /// - возможность динамического добавления или удаления обязанностей посредством изменения элементов цепочки или их порядка.
        /// Использование паттерна может усложнять отслеживание запросов и отладку.
        /// </summary>
        public void DemoChainOfResponsibility()
        {
            var authHandler = new AuthHandler
            {
                NextHandler = new BalanceHandler
                {
                    NextHandler = new SummaryHandler(),
                }
            };

            authHandler.HandleMessage(new CommandItem
            {
                Credentials = "123",
                CommandText = "summary",
            });
        }