Управление потоком программ в не-веб-приложении с широкой архитектурой MVC (c #) - PullRequest
1 голос
/ 20 декабря 2011

У меня есть консольное приложение, центральный процесс которого состоит в том, чтобы получить следующую строку из таблицы БД и на основе значения поля запустить один из нескольких битов кода, которые все возвращают один и тот же тип объекта o. Я мог бы иметь переключатель или если расположение типа оператора, который делает что-то вроде (псевдокод):

if exhibitType == "Summary" then AddSummaryExhibit
elseif exhibitType == "Timeline" then AddTimelineExhibit

... и т. Д. Почти как настройка маршрутизации на веб-сайтах MVC. Эта программа придерживается приблизительной структуры типов MVC, где каждый метод получает данные из модели, обрабатывает HTML на основе представления бритвы .cshtml и добавляет его в коллекцию «разделов», которые принадлежат контейнеру документов HTML.

В идеале было бы неплохо просто добавить новый метод имени x в мой проект, а затем разрешить добавление x в качестве нового значения в таблицу db без использования этого набора условий, поддерживаемого вручную. Я думал, может быть, делегаты или кто-то может подать заявку здесь, но это всего лишь мысль. Буду признателен за любые советы по передовой практике.

Спасибо

1 Ответ

0 голосов
/ 20 декабря 2011

Я полагаю, что вы ищете, уже отвечено здесь в теме, говоря о длинных операторах переключения: Как избежать длинного переключения .. нужна помощь в рефакторинге

По сути, вы ищете банду из четырех моделей. На ум приходят паттерны стратегии, паттерна состояния и цепочки ответственности.

Эти шаблоны могут быть довольно сложными, чтобы подумать о том, как они будут работать в соответствии с вашими требованиями, но это огромный шаг в правильном направлении, выявив потребность в модульности, а также то, что вы не получаете ее из своего оператора switch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...