Цепочка ответственности с большими конфигами

Я использую шаблон проектирования цепочки ответственности для своего конвейера. Одна проблема, которую я обнаружил, заключается в том, что объект конфигурации становится все больше и больше по мере добавления новых цепочек. По сути, мой объект конфигурации становится массивным синглтоном. Есть ли эффективный способ справиться с этой ситуацией?

Подробности:

Моя текущая настройка

handler.next = handler2
handler2.next = handler3
...

и я использую цепочку, передавая ей объект конфигурации.

handler.HandleRequest(config)

объект конфигурации имеет всю информацию конфигурации, необходимую для обработчиков, таким образом, становится все больше и больше, когда я добавляю больше цепочек.

Возможное решение:

В этом посте лучший ответ - использовать внедрение зависимостей.

Какие шаблоны проектирования могут быть применены к проблеме настроек конфигурации?

Тем не менее, я не уверен, как использовать внедрение зависимостей в дизайн цепи ответственности без существенного изменения дизайна.

Может ли кто-нибудь помочь мне в этом вопросе? Спасибо!

1 ответ

Я думаю, что вы пытаетесь делать вещи вместе, которые на самом деле не принадлежат друг другу.

Если вам нужно извлечь настройки / значения конфигурации для различных частей вашего приложения, почему вы пытаетесь прочитать их все в одном месте?

Я предпочитаю небольшие "объекты настроек" для каждого компонента, который нуждается в каких-то настройках. Я обычно начинаю с объектов, которые содержат все жестко заданные значения по умолчанию и получают из этих базовых настроек, когда это необходимо. Производные объекты могут считываться из произвольных источников (большую часть времени это файл app.config, но я также использовал базы данных и веб-сервисы).

Это запись в блоге, которая более подробно описывает объекты настроек.

Другие вопросы по тегам