xconfigurator
Новичок
Application Controller в CMF: избыточность экземпляров данного паттерна
Приветствую, народ, прошу разъяснить некоторые моменты.
При пректировании CMF, решил использовать новую модную вариацию MVC с Front/Application контроллерами.
С Front Controller всё как-бы понятно, основную ф-ность характеризовать как:
1. Инициализация и вызов цепочки Interception Filter
2. Получение объекта Application Controller посредством некой фабрики, и делегирование ему последующей обработки контекста (Request|Responce Context)
естественно, можно добавить ещё чего-то по-вкусу, но из основной ф-ности как бы всё
Обязанности Application Controller-а же, мне представляются следующим образом:
1. На основе распарсенного URL полученного из Request Context, используя некую Command Factory создаём объект конкретной комманды для обработки этого запроса (Action)
2. управление уровнем Представления (шаблонизация, passive/active view, transform/template view etc) Впринципе, кто создаёт конкретный View, здесь не важен - это может быть Command(Action) - как классический пример, либо же Application Controller
вот собственно и всё...
Вопрос
1.
Если создание конкретной Команды (Action), происходит средствами Абстракной Фабрики (Command Factory) на основе, например конфига, динамически выбираемой Стратегии (Strategy), зачем вообще нужен дополнительный уровень абстракции - Application Controller
Ведь все те же действия, могут осуществляться в Front Controller, с тем жу уровнем АБСТРАКЦИИ (гибкости), как и в Application Controller (так как конкретные объекты, реализующие Бизнес-Логику создаются Абстрактными фабриками - т.е. Command[/b] создаётся Command Factory)
- для чего тогда нужен этот самый Application Controller (отдельная абстрактная сущность).
- Кто их реально использует в своих CMF
- Как Вы их используете
2
Непонятно (видимо, из-за неразрешённого вопроса №1), сколько должно быть этих самых Application Controller (мда, звучит глуповато - поясню на примере)
Допустим имеем некий сайт, на нашем CMF, у сайта существуют такие сервисы (компоненты и т.п)
- Новости
- Каталог чего-то (например продукции)
- Книга отзывов
всё это живёт под нашим CMF, который использует Front Controller для Маршрутизации к конкретному сервису (новости, отзывы), и Application Controller - для создания Объекта Command (Action) обрабатывающего этот запрос
Теперь, URL типа : http://somesite.com/news/view/2006/11/13
"Декомпозируется" объектом Context и является "Картой" для Front Controller, какой Application Controller нужно создать (на это указывает часть news, т.е. нечто вроди:
и для Application Controller указывает, какая команда (Command/Action) должны создаваться (на это указывает view)
В этом примере, все указания, какой именно объект должен создаваться берутся из URL (после, маппинг с конфига и проч.), т.е. один клас Application Controller (в данном случае WebApplicationController) может создавать конкретные Команды для каждого из сервисов (новости, каталог, форум, магазин да что угодно)
- Для чего тогда нужно несколько экземпляров подклассов application Controller
например NewsWebAppController, ShopWebAppController и т.д.
- Кто как делает в своих CMF
- Что Вы считаете по поводу необходимости/ненужности подклассов пораждённых от WebAppController
Вобщем, всем, кто потратив время, дочитал до этих строк - большое спасибо! Вы мне очень поможите, если попробуете объяснить непонятные мне моменты!
Приветствую, народ, прошу разъяснить некоторые моменты.
При пректировании CMF, решил использовать новую модную вариацию MVC с Front/Application контроллерами.
С Front Controller всё как-бы понятно, основную ф-ность характеризовать как:
1. Инициализация и вызов цепочки Interception Filter
2. Получение объекта Application Controller посредством некой фабрики, и делегирование ему последующей обработки контекста (Request|Responce Context)
естественно, можно добавить ещё чего-то по-вкусу, но из основной ф-ности как бы всё
Обязанности Application Controller-а же, мне представляются следующим образом:
1. На основе распарсенного URL полученного из Request Context, используя некую Command Factory создаём объект конкретной комманды для обработки этого запроса (Action)
2. управление уровнем Представления (шаблонизация, passive/active view, transform/template view etc) Впринципе, кто создаёт конкретный View, здесь не важен - это может быть Command(Action) - как классический пример, либо же Application Controller
вот собственно и всё...
Вопрос
1.
Если создание конкретной Команды (Action), происходит средствами Абстракной Фабрики (Command Factory) на основе, например конфига, динамически выбираемой Стратегии (Strategy), зачем вообще нужен дополнительный уровень абстракции - Application Controller
Ведь все те же действия, могут осуществляться в Front Controller, с тем жу уровнем АБСТРАКЦИИ (гибкости), как и в Application Controller (так как конкретные объекты, реализующие Бизнес-Логику создаются Абстрактными фабриками - т.е. Command[/b] создаётся Command Factory)
- для чего тогда нужен этот самый Application Controller (отдельная абстрактная сущность).
- Кто их реально использует в своих CMF
- Как Вы их используете
2
Непонятно (видимо, из-за неразрешённого вопроса №1), сколько должно быть этих самых Application Controller (мда, звучит глуповато - поясню на примере)
Допустим имеем некий сайт, на нашем CMF, у сайта существуют такие сервисы (компоненты и т.п)
- Новости
- Каталог чего-то (например продукции)
- Книга отзывов
всё это живёт под нашим CMF, который использует Front Controller для Маршрутизации к конкретному сервису (новости, отзывы), и Application Controller - для создания Объекта Command (Action) обрабатывающего этот запрос
Теперь, URL типа : http://somesite.com/news/view/2006/11/13
"Декомпозируется" объектом Context и является "Картой" для Front Controller, какой Application Controller нужно создать (на это указывает часть news, т.е. нечто вроди:
PHP:
...
#require_once(LIB_ROOT_PATH.'/news/web_app_controller.php');
$appCtrl = new WebApplocationController($context);
....
В этом примере, все указания, какой именно объект должен создаваться берутся из URL (после, маппинг с конфига и проч.), т.е. один клас Application Controller (в данном случае WebApplicationController) может создавать конкретные Команды для каждого из сервисов (новости, каталог, форум, магазин да что угодно)
- Для чего тогда нужно несколько экземпляров подклассов application Controller
например NewsWebAppController, ShopWebAppController и т.д.
- Кто как делает в своих CMF
- Что Вы считаете по поводу необходимости/ненужности подклассов пораждённых от WebAppController
Вобщем, всем, кто потратив время, дочитал до этих строк - большое спасибо! Вы мне очень поможите, если попробуете объяснить непонятные мне моменты!