Когда должны быть сделаны функциональные возможности в собственном контроллере?

StackOverflow https://stackoverflow.com/questions/3427376

Вопрос

Я работаю над веб-приложением, который должен представить диаграммы на разных страницах. Каждая страница соответствует контроллеру, и каждый контроллер, который нуждается в графике, имеет интерфейс для ChartService. Служба запрашивает график от стороннего поставщика. Затем он возвращает изображение, завернутое в некоторых HTML с JavaScript в виде строки непосредственно в выходной поток. CharmService необходимо поставлять данные и некоторые другие параметры, такие как период времени и файл шаблона.

Должен ли я терпеть функциональность графиков в свой собственный контроллер? Каждый другой тип графика может быть подан другим методом действий на ChartController.

Но будет ли это проблемой, тогда я обслуживаю некоторые из моих страниц из нескольких контроллеров? Каковы руководящие принципы для определения, когда функциональные возможности должны быть предоставлены собственный контроллер?

Это было полезно?

Решение

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

Создайте новый контроллер, когда вы хотите добавить поведение в приложение.

Другие советы

Дэйв,

У меня был абстрактный базовый контроллер, от которого унаследовал ваш главный контроллер. Базовый контроллер будет иметь все необходимые функциональные возможности с переопределенными частями дочернего контроллера, которые были подходящими. Не зная полный контекст вашего дилемма, это может быть или не может быть осуществимым (или желательным) подходом, но это то, что я нанимаю во всех моих контроллерах в настоящее время.

редактировать - Красота этого подхода заключается в том, что если вам повезет, 75% функциональности базовоннолеров останется только на 25% от переопределения функций и / или функциональности на заказ, добавленной для этого дочернего контроллера. Это даст вам очень чистую парадигму, поскольку каждый новый тип графика будет иметь свою модель / контроллер с потенциально идентичными именами методов действий, что делает стоимость «входа» для новых типов диаграмм очень недорого.

Джим

IMO, если у вас есть раздел «Charting» с URL-адресом

charts/income
charts/expenditure

Тогда контроллер Charting имеет смысл. Кроме того, если например, ваш контроллер Charting Controller вызывается исключительно на запросы AJAX с различных страниц, то ChartingController все еще имеет смысл. Но если вы собираетесь иметь URL

products/list
products/yearlyStockChart
employees/details
employees/performanceChart

Тогда вы хотите, чтобы продукты контролируют со списком () и годовым ключом () действиями, а также работоструктуретезонтероллером с подробностями () и действиями PerformancechArt (), с обоим контроллером, использующим картарингервис.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top