Цепочка ответственности с большими конфигами
Я использую шаблон проектирования цепочки ответственности для своего конвейера. Одна проблема, которую я обнаружил, заключается в том, что объект конфигурации становится все больше и больше по мере добавления новых цепочек. По сути, мой объект конфигурации становится массивным синглтоном. Есть ли эффективный способ справиться с этой ситуацией?
Подробности:
Моя текущая настройка
handler.next = handler2
handler2.next = handler3
...
и я использую цепочку, передавая ей объект конфигурации.
handler.HandleRequest(config)
объект конфигурации имеет всю информацию конфигурации, необходимую для обработчиков, таким образом, становится все больше и больше, когда я добавляю больше цепочек.
Возможное решение:
В этом посте лучший ответ - использовать внедрение зависимостей.
Какие шаблоны проектирования могут быть применены к проблеме настроек конфигурации?
Тем не менее, я не уверен, как использовать внедрение зависимостей в дизайн цепи ответственности без существенного изменения дизайна.
Может ли кто-нибудь помочь мне в этом вопросе? Спасибо!
1 ответ
Я думаю, что вы пытаетесь делать вещи вместе, которые на самом деле не принадлежат друг другу.
Если вам нужно извлечь настройки / значения конфигурации для различных частей вашего приложения, почему вы пытаетесь прочитать их все в одном месте?
Я предпочитаю небольшие "объекты настроек" для каждого компонента, который нуждается в каких-то настройках. Я обычно начинаю с объектов, которые содержат все жестко заданные значения по умолчанию и получают из этих базовых настроек, когда это необходимо. Производные объекты могут считываться из произвольных источников (большую часть времени это файл app.config, но я также использовал базы данных и веб-сервисы).
Это запись в блоге, которая более подробно описывает объекты настроек.